Integrated tools for creating and sharing image streams

ABSTRACT

Some embodiments provide tools that allow a user to share content on one device with multiple other users using different devices. The content sharing tools allow the user to (1) create a shared stream that represents a set of shared content and (2) invite one or more recipients to subscribe to the shared stream. When a recipient subscribes to the shared stream, the set of content is streamed across one or more of his or her devices. In some embodiments, the content sharing tools are integrated into an operating system of a device.

CLAIM OF BENEFIT TO PRIOR APPLICATIONS

This application claims the benefit of U.S. Provisional Application61/657,806, filed Jun. 10, 2012, U.S. Provisional Application61/657,883, filed Jun. 10, 2012, and U.S. Provisional Application61/699,815, filed Sep. 11, 2012. U.S. Provisional Applications61/657,806, 61/657,883, and 61/699,815 are incorporated herein byreference.

BACKGROUND

Today, many different websites exists for sharing images. Typically, aperson uses a web browser to navigate to a website. The person then logson to the website and starts posting photos. In some cases, the personcan also leave comments regarding those photos. The photos and commentsmay be viewed by everyone or by a group of people (e.g., friends,family, colleagues) that is associated with the person.

There are a number of shortcomings with such image and comment sharingoperations described above. As a first example, the person may take aphoto with a smart phone having a camera. To share that photo, theperson then has to navigate to the website and log onto the websitebefore he or she can even start uploading the photo. This can entailopening a web browser and inputting the website's URL address into webbrowser. If a desktop or laptop computer is being used, the person mayalso have to plug in the smart phone to the computer and then import thephoto into the computer. Accordingly, there can be many different stepsthat must be performed just to share that one photo.

As another example, the website might not provide any easy options toselect certain people that can or cannot view a group of photos. Forexample, when a person shares photos, they can be seen by eithereveryone or all people (e.g., friends, family, colleagues) that areassociated with that person. Similarly, any comments that are leftregarding the photos can be viewed by either everyone or the associatedpeople. As such, there may be no easy way to specify a personal or minisocial network that excludes one group of people (e.g., friends) whileincluding another group of people (e.g., family).

BRIEF SUMMARY

Some embodiments described herein provide tools that allow a person toshare content (e.g., images, video clips) on one device with multipleother people using different devices. Examples of such devices include adesktop computer, laptop, tablet, smart phone, digital media receiver,smart television (“TV”), etc. The content may also be shared across theperson's own devices. To facilitate the sharing operations, the contentsharing tools allow the person to (1) create a shared stream thatrepresents a set of shared content, and (2) invite one or morerecipients (e.g., friends, family) to subscribe to the shared stream.When a recipient subscribes to the shared stream, the set of sharedcontent is streamed across to one or more of the recipient's devices.

In conjunction with the content sharing features, the content sharingtools (hereinafter image sharing tools) allow different participants toshare comments regarding the stream's content. In some embodiments, thecomments are pushed in real time to all devices (e.g., across differentplatforms) of the different participants associated with the sharedstream. By pushing content and comments to a specified group of people,the content sharing tools create a social network (e.g., a mini socialnetwork, a personal social network). In this network, a participant cantake a photo with his or her smart phone, add it to a shared streamalbum, and receive, at a moment's notice, comments from only those otherparticipants that are associated with the shared stream album.

The image sharing tools of some embodiments provide a variety ofdifferent tools to modify a shared photo stream album. The user can usethese tools to add or delete image from the shared photo stream album.When an image is added to the shared photo stream album, the image isdistributed across the user's own devices and the devices of otherparticipants that have subscribed to the shared photo stream album.Conversely, when an image is deleted from the user's device, the imagemay be deleted from the user's own devices and the participants'devices.

In some embodiments, the image sharing tools allow a user to manage ashared photo stream album. Example of such management features includeresending a photo stream invitation, inviting additional subscribers,removing existing subscribers, and deleting the shared photo streamalbum. The image sharing tools of some embodiments only allow an owner(i.e., the person that created the shared photo stream album) to performone or more of these management operations. However, the image sharingtools may allow the owner to specify access privileges. That is, theowner can specify whether a subscriber can add images to or removeimages from the shared photo stream album, add or remove subscribers,make comments, etc. In some embodiments, the image sharing tools providea control that when selected unsubscribes a subscriber from a sharedphoto stream album.

The image sharing tools of some embodiments allow content and commentsto be shared across different platforms (e.g., from different vendors).That is, a person using one type of computing device (e.g., a tablet,smart phone) can share images and comments with a different person usinganother type of computing device (e.g., personal computer, laptop). Insome embodiments, the image sharing tools are integrated into anoperating system (“OS”). Alternatively, the image sharing tools may beprovided as part of an image application (e.g., a photo viewingapplication, an image organizing and editing application).

In the cross-platform system, each client may communicate with a controlserver. In some embodiments, the control server facilitates the sharingby managing control data associated with different shared photo streams.Examples of such control data include user data (e.g., a list of devicesassociated with a user) and photo stream data (e.g., a list of photostream associated with the user, a list of individuals that can access aparticular photo stream).

When a new shared stream album is created, the control server of someembodiments sends file location data to the owner's device. The owner'sdevice then uploads images in the shared photo stream album to a storageserver. This storage server may be a third-party storage server. Thecontrol sever may also send a message to each recipient that has beeninvited to participate in the shared stream album. When a recipientaccepts the invitation, the images may be downloaded from the storagesever to one or more of the recipient's devices.

In some embodiments, the image sharing tools allow images in a sharedphoto stream album to be published as a webpage to a website. Inpublishing the images, the layout of the webpage is selected based onthe number of images and the orientation of the images. When differentbatches of images are added at different time, one particular layout isselected for each batch. The images in a batch may be presented in aparticular order (e.g., starting with the oldest image and ending withthe newest image, or vice versa). Also, the different batches may bepresented in a particular order (e.g., starting with the oldest batchand ending with the newest batch, or vice versa). In some embodiments,the webpage is generated by a web-publishing server. Alternatively, aclient device may generate the web page and upload it to theweb-publishing server.

Several more detailed embodiments of the invention are provided below.Many of these examples refer to controls (e.g., selectable items) thatare part of the image sharing tools. The image sharing tools in someembodiments are part of a standalone application that executes on top ofthe operating system of a device, while in other embodiments they arepart of the operating system. Also, in many of the examples below (suchas those illustrated in FIGS. 1-6, 8-13, 15-18, 21-35, 38-41, and 49-51)the device on which the application executes has a touch screen throughwhich a user can interact with the image editing application. However,one of ordinary skill in the art will realize that cursor controllers orother input devices can be used to interact with the controls andapplications shown in these examples for other embodiments that executeon devices with cursors and cursor controllers or other input mechanisms(e.g., voice control, remote control).

The preceding Summary is intended to serve as a brief introduction tosome embodiments as described herein. It is not meant to be anintroduction or overview of all subject matter disclosed in thisdocument. The Detailed Description that follows and the Drawings thatare referred to in the Detailed Description will further describe theembodiments described in the Summary as well as other embodiments.Accordingly, to understand all the embodiments described by thisdocument, a full review of the Summary, Detailed Description and theDrawings is needed. Moreover, the claimed subject matters are not to belimited by the illustrative details in the Summary, Detailed Descriptionand the Drawings, but rather are to be defined by the appended claims,because the claimed subject matters can be embodied in other specificforms without departing from the spirit of the subject matters.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features as described here are set forth in the appendedclaims. However, for purposes of explanation, several embodiments areset forth in the following figures.

FIG. 1 illustrates an example graphical user interface (“GUI”) of anapplication for sharing images.

FIG. 2 provides an illustrative example of a recipient becoming asubscriber by accepting a photo stream invitation.

FIG. 3 provides an illustrative example of sharing a comment regardingan image in the photo stream.

FIG. 4 provides an illustrative example of selecting several images fora photo stream.

FIG. 5 provides an illustrative example of specifying a name andsubscriber for a photo stream.

FIG. 6 provides an illustrative example of inputting a comment for animage in the new photo stream.

FIG. 7 conceptually illustrates a process that some embodiments use tocreate a new photo stream.

FIG. 8A provides an illustrative example of how a recipient is notifiedof the photo stream invitation.

FIG. 8B illustrates an example of the owner receiving notification ofthe acceptance of the invitation.

FIG. 9 provides an illustrative example of an email that is received atthe recipient's device.

FIG. 10 provides an illustrative example of a first recipient forwardingthe photo stream to a second recipient.

FIG. 11A provides an illustrative example of the second recipientaccepting the photo stream invitation.

FIG. 11B provides an illustrative example of a notification that ispushed onto the owner's device upon the second recipient accepting theinvitation.

FIG. 12 provides an illustrative example of a subscriber selecting andviewing the photo stream after accepting the invitation.

FIG. 13 provides an illustrative example of a recipient declining aphoto stream invitation.

FIG. 14 conceptually illustrates a process that some embodiments use toaccept or decline a photo stream invitation.

FIG. 15 provides an illustrative example of adding an image to anexisting photo stream.

FIG. 16 provides an illustrative example of several notifications thatare received at the subscriber's device.

FIG. 17 provides an illustrative example of deleting an image from aphoto stream.

FIG. 18 provides an illustrative example of the photo stream on thesubscriber's device after deleting the image.

FIG. 19 conceptually illustrates a process that some embodiments performto add or delete images from a photo stream.

FIG. 20 conceptually illustrates a process that some embodiments performwhen a participant adds images to or deletes images from a photo stream.

FIG. 21 provides an illustrative example of resending a photo streaminvitation to a recipient that has not accepted or declined theinvitation.

FIG. 22 provides an illustrative example of adding a subscriber for thephoto stream.

FIG. 23 provides an illustrative example of removing a subscriber.

FIG. 24 provides an illustrative example of deleting a photo stream.

FIG. 25 provides an illustrative example of unsubscribing from a photostream by a subscriber.

FIG. 26 provides an illustrative example of preventing the user of adevice from receiving a photo stream invitation.

FIG. 27 provides an illustrative example of turning off the shared photostream features.

FIG. 28 provides an illustrative example of blocking photo streamalerts.

FIG. 29 provides an illustrative example of adding a comment regardingan image in a photo stream.

FIG. 30 provides an illustrative example of how the comment appears on asubscriber's device.

FIG. 31 provides an illustrative example of how the comment appears onthe user's device.

FIG. 32 provides an illustrative example of marking an image.

FIG. 33 provides an illustrative example of how the image application ofsome embodiments displays an image with comments.

FIG. 34 provides an illustrative example of scrolling through differentimages with comments.

FIG. 35 provides an illustrative example of scrolling through thecomments associated with one image.

FIG. 36 conceptually illustrates a process that some embodiments use topost a comment.

FIG. 37 conceptually illustrates a process that some embodiments use toprovide one or more notifications regarding a new comment.

FIG. 38 provides an illustrative example of publishing a photo stream toa website.

FIG. 39A provides an illustrative example accessing the webpage with thesubscriber's device.

FIG. 39B provides an example message that is received at a recipient'sdevice.

FIG. 40 provides an illustrative example of how the webpage is updatedwhen a new image is added to the photo stream.

FIG. 41 provides an example of scrolling through images in the photostream.

FIG. 42 provides an illustrative example of a webpage layout for a photostream that includes two images.

FIG. 43 provides an illustrative example of a webpage layout for a photostream that includes three or four images.

FIG. 44 provides an illustrative example of a webpage layout for a photostream that includes five or six images.

FIG. 45 illustrates webpage layouts for a photo stream that includesmore than six images.

FIG. 46 provides several examples of how images are framed in a webpagelayout.

FIG. 47 provides an illustrative example of how portrait and landscapeimages are presented in a batch layout.

FIG. 48 conceptually illustrates a process that some embodiments use topublish images in a photo stream to a website.

FIG. 49 provides an illustrative example of the image sharing tools on atablet.

FIG. 50 provides another example of the image sharing tools on a tablet.

FIG. 51 provides an illustrative example of how comments are presentedon the tablet.

FIG. 52 provides an illustrative example of opening a shared photostream with a digital media receiver.

FIG. 53 provides an illustrative example of navigating images in thephoto stream.

FIG. 54 provides an illustrative example of filtering a display to onlydisplay images with one or more new comments.

FIG. 55 illustrates an example of another image application for adigital media receiver or smart TV.

FIG. 56 provides an illustrative example of installing and configuringthe image sharing tools.

FIG. 57 illustrates an example of specifying a subscriber and a name forthe photo stream.

FIG. 58 illustrates selecting images for the photo stream and inputtingcomments for several of the images.

FIG. 59 provides an illustrative example of accepting a photo streaminvitation with a subscriber's device.

FIG. 60 provides an example of adding an image to a photo stream.

FIG. 61 provides an illustrative example of leaving a comment using aPC.

FIG. 62 provides an illustrative example of an alternate embodiment ofthe integrated image sharing tools.

FIG. 63 provides an illustrative example of the image sharing tools thatare integrated into an image organizing and editing application.

FIG. 64 provides an illustrative example of accepting a photo streaminvitation with a subscriber's device.

FIG. 65 provides an illustrative example of how the image sharing toolsof some embodiments present comments on the photo application.

FIG. 66 conceptually illustrates an example system architecture in whichthe clients communicate with the different servers to share images andcomments.

FIG. 67 conceptually illustrates an example of how a user's photostreams are represented at the server side.

FIG. 68 conceptually illustrates an example process that someembodiments perform to notify recipients of a new-shared streaminvitation.

FIG. 69 conceptually illustrates an example process that someembodiments perform when it receives a response from a recipient device.

FIG. 70 conceptually illustrates an example process that someembodiments perform to notify participants of a new comment.

FIG. 71 conceptually illustrates an example process that someembodiments perform to deliver a new comment.

FIG. 72 conceptually illustrates the software architecture of contentsharing tools of some embodiments

FIG. 73 is an example of an architecture of such a mobile computingdevice.

FIG. 74 conceptually illustrates another example of an electronic systemwith which some embodiments of the invention are implemented.

DETAILED DESCRIPTION

In the following detailed description of the invention, numerousdetails, examples, and embodiments of the invention are set forth anddescribed. However, it will be clear and apparent to one skilled in theart that the invention is not limited to the embodiments set forth andthat the invention may be practiced without some of the specific detailsand examples discussed.

Some embodiments described herein provide tools that allow a person toshare images on one device with multiple other people using differentdevices. Examples of such devices include a desktop computer, laptop,tablet, smart phone, digital media receiver, smart television (“TV”),etc. The images may also be shared across the person's own devices. Tofacilitate the sharing operations, these tools allow the person to (1)create a photo stream that represents a set of shared images and (2)invite one or more recipients to subscribe to the photo stream. When arecipient subscribes to the photo stream, the set of images is streamedacross to one or more of the recipient's devices.

In conjunction with the image sharing features, the image sharing toolsallow different participants to share comments regarding the photostream's images. In some embodiments, the comments are pushed in realtime to all devices (e.g., across different platforms) of the differentparticipants associated with the shared stream. By pushing content andcomments to a specified group of people, the content sharing toolscreate a social network (e.g., a mini social network, a personal socialnetwork). In this network, a participant can take a photo with his orher smart phone, add it to a shared photo stream, and receive, at amoment's notice, comments from only those other participants that areassociated with the shared photo stream.

In some embodiments, the image sharing tools are integrated into anoperating system (“OS”). Alternatively, the image sharing tools may beprovided as part of an image application (e.g., a photo viewingapplication, an image organizing and editing application). For someembodiments, FIG. 1 illustrates a graphical user interface (“GUI”) 100of an application with such image and comment sharing features.Specifically, this figure illustrates in five operational stages 170-190how a user can use the GUI 100 to create a shared photo stream.

In several examples described below, a first user creates a photo streamand sends an invitation to a second different user to subscribe to thephoto stream. To simplify the description, the first user may bereferred to as an owner, and the second user may be referred to as arecipient or subscriber depending on whether the second user hassubscribed to the photo stream.

As shown in FIG. 1, the GUI 100 includes (1) an image display area 105,(2) a photo stream options display area 125 (hereinafter an optionssheet), and (3) a photo stream comment display area 150 (hereinafter acomment sheet). The image display area 105 is an area within the GUI 100through which the user can view images. The image display area 105displays thumbnail representations of images. Thumbnails arereduced-size representations of full-size images. At any time, the usercan select any one of the thumbnail images to display the correspondingimage at a higher resolution. This higher resolution image is typicallynot the full size image (which is often of a higher resolution thanresolution of the display device). In some embodiments, the thumbnailimage represents only a portion of an image. That is, the thumbnails inthe image display area 105 are all squares, irrespective of the aspectratio of the full-size images. In order to determine the portion of arectangular image to use for a thumbnail, the application of someembodiments identifies the smaller dimension of the image and uses thecenter portion of the image in the longer dimension.

As shown in the first stage 170, the image display area 105 displaysimages from a collection, namely a camera roll. This is indicated by atop bar 110 that displays “Camera Roll” as the heading for the imagedisplay area 105. The camera roll collection includes one or more imagestaken with the device (e.g., a smart phone, tablet) on which the imageapplication executes. Accordingly, the thumbnail images 102, 104, and106 represent those images taken with the device.

In the example illustrated in the FIG. 1, the GUI 100 includes a bottombar 115 that displays several selectable controls 112, 114, and 116.Specifically, the user can view images in another collection (e.g.,album) by selecting the “Albums” tab 112. When selected, the applicationof some embodiments lists different collections, such as the camera rollcollection. Different from the “Albums” tab, the user can select the“Photo Stream” tab 114 to display a list of different photo streams. The“Places” tab 116 can be selected to display a map showing mappedlocations of geotagged images (e.g., images associated with GlobalPositioning System (GPS) metadata). In some embodiments, the applicationincludes a separate “Camera Roll” tab for displaying images in thecamera roll collection. The application may also include a “Photos” tabfor displaying all images (e.g., a library of images) taken with thedevice and/or imported into the device.

The photo stream options sheet 125 is used to specify different optionsfor a shared photo stream. This sheet 125 includes a subscriber field130 and a name field 135. The subscriber field 130 is an area in thesheet that the user can input one or more recipients for the photostream. That is, the owner can input contact information into this fieldto invite the recipients to join the photo stream.

In the example illustrated in FIG. 1, the contact information that canbe inputted in the subscriber field 130 is an email address or a nameassociated with an email address. However, other types of contactinformation (e.g., a phone number) may be provided to invite a recipientto join the shared photo stream. In some embodiments, the applicationincludes an auto-complete feature. For instance, one or more suggestednames from a contacts directory or an address book may be displayed asthe owner inputs text into the field 130. The owner can then select asuggested name to automatically fill in the field 130.

The name field 135 allows the user to specify a name or title for thephoto stream. For example, the owner can use this field to input a nameor title that summarizes the photo stream's images. The name specifiedwith the name field 135 may be displayed in a number of differentplaces. The name may appear in the photo stream invitation (e.g., emailmessage). The name may also appear as the heading for the shared photostream.

The comment sheet 150 can be used to add a comment. The comment sheet150 includes a comment field 155 for inputting the comment. In someembodiments, the comment is associated with a first image in the photostream (e.g., the first selected image 102 in the image display area105). This comment may be displayed with the first image (e.g., as acaption over a lower portion of the first image) on each device ofparticipants associated with the photo stream. As shown in FIG. 1, thecomment field is an optional field because the owner does not have toinput a comment in order to create the photo stream.

Having described the elements of the GUI 100, the operations of creatinga photo stream will now be described by reference to the state of theGUI during the five stages 170-190 that are illustrated in FIG. 1. Inthe first stage 170, the image display area 105 displays thumbnailrepresentations 102-106 of images from the camera roll collection. Asmentioned above, the camera roll collection includes one or more imagestaken with the device (e.g., a smart phone or tablet equipped with acamera).

The second stage 175 illustrates the GUI 100 after the user has selectedseveral images for the shared photo stream. Specifically, the user hasselected (e.g., by performing a gesture such as tapping the user'sfinger on) the first thumbnail image 102 representing a first image forthe photo stream, and a second thumbnail image 104 representing a secondimage. To choose images, the user might have first selected an editbutton 118 (e.g., an image selection button, an action button) prior toselecting the thumbnail images 102 and 104. Otherwise, the image displayarea 105 may display a full-screen representation of the selected image.

When the application is in an image selection state, the selection of athumbnail image causes it to display a marking near or at leastpartially over the selected thumbnail image. This marking provides theuser with a visual indication of the selection of the thumbnail image.In the example illustrated in FIG. 1, the marking is a check mark 122that is displayed over each of the selected thumbnail images 102 and104. However, the application may display a different marking to providethe same visual indication.

To share the selected images, the user selects (e.g., by performing agesture such as tapping the user's finger on) a share button 160. Theselection of the share button 160 causes a pop-up menu 145 to appear, asshown in the third stage 180. The pop-up menu 145 may appear by slidingup from the bottom of the screen and disappear by sliding down towardsthe bottom of the screen.

As shown in the third stage 180, the pop-up menu 145 includes severalselectable items. The selectable items are arranged as a 2×2 grid ofbuttons. Each button is associated with an icon and a description. Theselectable items include a photo stream button 165, a message button124, a mail button 126, and a copy button 172. The photo stream button165 is for creating a new photo stream or adding the selected images toan existing photo stream, the message button 124 is for creating a textmessage (e.g., SMS, iMessage) with the selected images, the mail button126 is for generating an email with the selected images, and the copybutton 172 is for copying the selected images. The pop-up menu 145 alsoincludes a cancel button 128 for canceling and returning to the previousview. In some embodiments, the pop-up menu 145 includes a print button(not shown) for printing the selected images.

In the example illustrated in the third stage 180, the selectable itemsare icon based. In some embodiments, the application presents each itemwith text and an icon, only with the text and without the icon, or onlywith the icon and without the text. The application of some embodimentspresents different selectable items based on the number of images thatare selected from the image display area. For instance, if only oneimage is selected, the pop-up menu 145 may include an option to use theselected image as a desktop wallpaper.

In the third stage 180, the user selects the photo stream button 165.The fourth stage 185 illustrates the GUI 100 after the user has selectedthe photo stream button 165. As shown, the selection resulted in thedisplay of the photo stream options sheet 125 for creating a new photostream. When a photo stream has been previously created, the applicationprovides an option to add the selected images to an existing photostream or create a new photo stream, in some embodiments. Here, thephoto stream option sheet 125 is overlaid by the top bar 110 thatincludes a heading. The heading reads “Photo Stream”. In someembodiments, the heading reminds the user that he or she is creating anew photo stream by specifically stating “New Photo Stream”.

As shown in the third stage 180, the user has typed in an email addressinto the subscriber field 130 using an on-screen or virtual keyboard140. The user has also typed in a name for the photo stream in the namefield 135. Once the fields 130 and 135 are populated, the user canselect a next button 134 that is shown on the top bar 110. Optionally,the user can select a cancel button 132 to return to a pervious view(e.g., the view illustrated in the second stage 175). In someembodiments, the next button 134 is disabled when there are one or moreblank fields. For example, the next button 134 may be disabled when thesubscriber field and/or the name field are blank. The application ofsome embodiments modifies the appearance of the button 134 (e.g.,changes its color) to indicate that it is selectable or disabled.

The fifth stage 190 illustrates the application after the selection ofthe next button 134.

The selection results in the display of the comment sheet 150. In someembodiments, the application presents the comment sheet 150 withanimation. For example, the application may present it by flipping overthe photo stream options sheet 125, similar to a two-sided card beingflipped over.

As shown in the fifth stage 190, the comment sheet 150 includes aheading that states that it is associated with the photo stream. Thename of the photo stream is also shown on the comment sheet.Specifically, the name of the photo stream is displayed below thecomment field 155 with an icon (e.g., a photo stream icon). The commentfield 155 remains empty, as the user has not inputted any comment for animage (e.g., the first image) in the photo stream. In some embodiments,the comment sheet 150 displays one or more thumbnail images of images inthe photo stream. In the example illustrated in the fifth stage 190,thumbnail images of the selected images are shown as being attached(e.g., paper clipped) to the comment sheet 150. However, differentembodiments may differently present previews of the photo stream'simages. For example, the application may present the images as a grid ofthumbnails on one or more rows.

In the fifth stage 190, the user selects a post button 136 to create thenew photo stream. Optionally the user can select a cancel button 138 toreturn to a previous display area, namely the options sheet 125 that isillustrated in the fourth stage 185. In some embodiments, the selectionof the cancel button 138 causes the application to return to the imagedisplay area 105 that is illustrated in the second stage 175.

When the post button is selected, the application of some embodimentsgenerates a message regarding the new photo stream and sends thenotification to a control or push server. Based on the message, thecontrol server may respond with file location data (e.g., with one ormore Uniform Resource Locators (“URLs”)) to send the images to a storageserver (e.g., a third-party storage server). The application may alsogenerate images to send to the storage server. For example, theapplication may generate one or more lower resolution images from astored image (e.g., raw image) and send those images to the storageserver.

In some embodiments, the control server identifies each deviceassociated with the recipient (e.g., based on the recipient's emailaddress) and sends one or more messages or notifications regarding thephoto stream invitation. Once the recipient accepts the invitation, theimages are downloaded from the storage server onto each associateddevice. To more quickly display the images, the images may be downloadedto a recipient's device prior to the recipient accepting the invitation,and may be deleted from the device if the recipient rejects theinvitation.

FIG. 2 provides an illustrative example of a recipient becoming asubscriber by accepting the photo stream invitation. Specifically, thisfigure illustrates in three operational stages 225-235 how the recipientcan accept the photo stream invitation to display the shared images onthe recipient's device. In this example, the recipient's device isexecuting the same image application as the owner's device. As such, theGUI 200 is the same one described above by reference to FIG. 1.

In the first stage 225, the application is displaying a photo streamdisplay area 220 (hereinafter a photo stream menu). To display the menu220, the recipient might have first selected (e.g., by performing agesture such as tapping the recipient's finger on) the “Photo Stream”tab 114. As shown, the menu 220 displays the photo stream created by theowner. The photo stream is listed with (1) an icon associated with theimage sharing tools, (2) the name of the photo stream, and (3) a numberthat identifies the number of images in the photo stream. In addition,the menu 220 identifies the owner as it states that the photo stream isshared by “Emily Parker”. In the illustrated example, the name of theowner is listed using a smaller font than the name of the photo stream.

In some embodiments, the image sharing tools provide one or more visualindications that there is a new photo stream invitation and/or an updateto an existing photo stream. This is shown in the photo stream menu 220as the new photo stream is listed with a marking 245. Here, the marking245 is a colored dot (e.g., blue dot) but other types of markings (e.g.,textual markings) can be used to convey the same message. For instance,the “Photo Stream” tab 114 shows an icon 285 that is badged with anumber 280. This number indicates that there is one new photo streaminvitation. In some embodiments, the application removes the badge 280from the icon upon displaying the photo stream menu. On the other hand,the marking 245 may be shown on the menu until the recipient eitheraccepts or declines the photo stream invitation.

As will be described in detail below, the image sharing tools of someembodiments provide different visual indications at multiple differentlevels to notify a user of a new photo stream invitation and/or anupdate to an existing photo stream. For example, the image sharing toolsmay badge the application's icon at the operating system (“OS”) desktoplevel, mark different photo streams with a marking at the applicationmenu level, and/or flag images (e.g., as new images) at the photo streamimage level. In conjunction with, or instead of one or more of thesevisual indications, the image sharing tools of some embodiments alertsthe user by causing the recipient's device to play a sound and/orvibrate.

In the first stage 225, the recipient selects (e.g., by performing agesture such as tapping the recipient's finger on) the photo stream fromthe photo stream menu 220. The selection causes the application todisplay a pop-up menu 215, as illustrated in the second stage 215. Insome embodiments, the pop-up menu 215 is superimposed over a portion ofthe photo stream menu 220 by sliding up from the bottom of the screen.The pop-up menu 215 includes a heading. The heading states that theowner would like to share the photo stream with the recipient. The owneris identified by the owner's name and email address, and the photostream is identified by its associated name. The pop-up menu 215includes (1) an accept button 250 for accepting the photo streaminvitation, (2) a decline button 255 for declining the invitation, and(3) a cancel button 260 for closing the pop-up menu without accepting ordeclining the invitation (e.g., keeping the invitation pending anddeciding at a later time).

As shown in the second stage 230, the recipient selects the acceptbutton 250 from the pop-up menu 215. This results in the display of animage display area 105, as illustrated in the third stage 235. The imagedisplay area 105 is the same as the one described above by reference toFIG. 1. The image display area 105 displays thumbnail representations202 and 204 of the images in the photo stream. The user can select anyone of the thumbnail representations 202 or 204 to display a full screenrepresentation of the corresponding image.

In the example illustrated in FIG. 2, the image display area 105 isoverlaid by the top bar 210, which includes the name of photo stream.The top bar 210 also includes a back button 265 for returning to thephoto stream menu 220 and an edit button 270 for selecting images in thephoto stream. In the example illustrated in the third stage 235, theimage display area also displays text below the two thumbnails 202 and204. The text states the name of the owner and the number of imagesshared by the owner.

In some embodiments, the application displays a marking that identifiesthe number of new image that are in the photo stream. This is shown inthe third stage 235 as a flag 275 is displayed over the thumbnail 202 ofthe first new image. The flag is marked with text that states that thereare two new images in the photo stream. The application of someembodiments displays such a marking for each new batch of images. Forexample, when the owner adds a new batch of images to the photo stream,the application may display a similar flag on a first thumbnail imagethat corresponds to the first image in the new batch.

The image application of some embodiments displays images in a batch ina particular order (e.g., starting with the oldest image and ending withthe newest image, or vice versa). The application of some embodimentsdisplays different batches in a particular order (e.g., starting withthe oldest batch to the newest batch, or vice versa). By displayingdifferent batches in chronological or reverse chronological order, theimages may not necessarily be ordered in a display area (e.g., the imagedisplay 105). For example, this can occur when there are multiplebatches and when an image in a first batch is newer (e.g., has atimestamp that is later) than another image in one of the subsequentbatches. Many different examples of batching or grouping images will bedescribed below.

In the example described above, the recipient's device is in an invitedstate through the first two stages 225 and 230. In this state, the photostream's images may not be pushed to the recipient's device or any otherdevices associated with the recipient. However, the images may be pushedto all of the recipient's devices upon the recipient accepting theinvitation. In some embodiments, a notification is sent to one or moreof the owner's devices upon the recipient accepting the invitation. Thisnotification may state that the recipient has subscribed to the photostream

As mentioned above, the image sharing tools create a social network byallowing users to share not only images but also comments regardingthose images. FIG. 3 provides an illustrative example of sharing acomment regarding an image in the photo stream. Four operational stages305-320 of the application are illustrated in this figure. These stagesare continuations of the stages that are illustrated in FIG. 2.

In the first stage 305, the image display area 105 displays thumbnailrepresentations 202 and 204 of the images associated with the photostream. The subscriber selects the first thumbnail image 202. Theselection causes the image display area 105 to display a full screenrepresentation 325 of the corresponding image. The full screenrepresentation is overlaid by the top and bottom bars 210 and 370. Thetop bar 210 includes a back button 330 to return to the thumbnail view.The top bar 210 also states that the displayed image 325 is a first oftwo images in the photo stream.

Different from the top bar 210, the bottom bar 370 includes (1) a sharebutton 345 for sharing the selected image, (2) a play button 350 forplaying a slide show of the images in the photo stream, and (3) acomment button 360 for leaving a comment regarding the displayed image.The bottom bar may also include a stream button (not shown) forstreaming the images in the photo stream to one or more other devices(e.g., a desktop computer, a laptop). In the example illustrated in FIG.3, each item in the bottom bar 370 is displayed with a correspondingicon. For example, the comment button 360 is displayed with a chatbubble icon 375. The chat bubble icon 375 includes a plus sign (i.e.,“+”) that provides a visual indication that a comment can be added forthe displayed image 325.

As shown in the second stage 310, the user selects the comment button360. The selection causes the virtual or on-screen overlay keyboard 140to appear, as illustrated in the third stage 315. The selection alsocauses the top bar 110 to display a heading that states “New Comment”.Here, the user types in a comment regarding the image 325.Alternatively, the user can select the cancel button 380 to return tothe full screen representation.

The fourth stage 320 illustrates the image application after inputtingthe comment. As shown, the comment is displayed over the image 325. Thecomment is also associated with comment metadata. The metadata isdisplayed below the comment, and identifies the person who left thecomment and the time and date that the comment was left. In the exampleillustrated in the fourth stage 320, the person who left the comment isidentified as “Me”. This is because the subscriber left the comment withthe subscriber's device. The comment is also displayed with an addcomment field 365 that can be selected to add another comment.

In some embodiments, the comments are shared in real time acrossmultiple different devices (e.g., across different platforms ofdifferent vendors). For instance, when a new comment has been received,the application of some embodiments generates a message regarding thenew comment and sends the message to the control server. The message mayinclude the comment and a key that uniquely identifies the image that isassociated with the comment. Based on the message, the control servermay store the comment, identify participants associated with the photostream, and send a message regarding an update to a photo stream to eachdevice associated with the identified participants. In some embodiments,the participant's device then downloads the comment and displays it withthe associated image.

Many more photo stream examples are described below. Section I describesanother more detailed example of creating a new photo stream. Thissection also describes another example of accepting a photo streaminvitation. Section II then describes adding and removing images from aphoto stream. Section III describes several examples of managing a photostream (e.g., resending an invitation, adding or removing a subscriber,unsubscribing, etc.). Section IV then describes additional examples ofexchanging comments. Section V describes publishing a photo stream to apublic website. These previous sections are then followed by examples ofthe image sharing tools that are implemented on different devices and/orplatforms. Specially, Section VI describes example of the image sharingtools that operate on a tablet. The tablet examples are followed bySection VII that describes an example digital media receiver. SectionVIII then describes how the image sharing tools of some embodiments areintegrated in an operating system (e.g., of a personal computer (“PC”)).Section IX then describes several more examples of the image sharingtools that are integrated into one or more image editing and organizingapplication. Section X then describes an example system architectureused to facilitate the image and comment sharing operations. Section XIthen describes example processes that are performed on the server-side.Section XII then describes a software architecture of content sharingtools of some embodiments. Finally, Section XIII then describes severalexample electronic systems that implement some embodiments describedherein.

I. Example Operations

As mentioned above, the image sharing tools allow an owner to create ashared photo stream album that includes images, and invite any number ofrecipients to join the shared photo stream album and view those images.When a recipient accepts the invitation, the images are downloaded ontoone or more of the recipient's devices. Several more example operationsof creating a photo stream album and sharing the photo stream album willnow be described by reference to FIGS. 1-14.

A. Creating the Photo Stream

An example of creating a photo stream has been described above. A moredetailed example of creating a photo stream will now be described byreference to a sequence of operations that is illustrated in FIG. 4-6.FIG. 4 provides an illustrative example of selecting several images fora photo stream. Six operational stages 405-430 of the owner's device 400are illustrated in this figure. The figure includes the image displayarea 105 that is described above by reference to FIG. 1.

The first stage 405 illustrates the device 400 displaying a graphicaluser interface (“GUI”) of its operating system (“OS”). The GUI includesselectable icons for opening different applications. Several of theicons are displayed along a menu bar (e.g., a dock). The icons includeones for opening a phone application, email application, web browser,and music player. An image application icon 435 (e.g., Photosapplication icon) and a camera application icon 440 are overlaid on theOS's desktop or main display area. To open the image application, theowner selects (e.g., by tapping the owner's finger on) the imageapplication icon 435.

The second stage 410 illustrates the device after the owner has selectedthe icon 435. As shown, the application displays a list 445 of differentcollections. The owner might have first selected the albums tab 112 todisplay this list. Here, the owner selects the camera roll collection460 from the list. As shown in the third stage 415, the selection causesthe image display area 105 displays thumbnail representations of imagesin the camera roll collection. Here, the camera roll collection includesthe images taken with the device (e.g., a smart phone or tablet equippedwith a camera).

The third and fourth stages 415 and 420 illustrate selections of severalimages for the new photo stream. Specifically, the owner selects (e.g.,by performing a gesture such as tapping the owner's finger on) a firstthumbnail image 450 to select a first image for the photo stream, andselects a second thumbnail image 455 to select a second image for thephoto stream. The owner might have selected the edit button 118 prior toselecting the first thumbnail image 450. Otherwise, the image displayarea 105 may display a full screen representation of the selected image.

When the application is in an image selection state, the selection of athumbnail image causes it to display a marking near or at leastpartially over the selected thumbnail image. This marking provides theuser with a visual indication of the selection of the thumbnail image.In the example illustrated in FIG. 4, the marking is a check mark 122that is displayed over each of the selected thumbnail images 450 and455. However, the application may display a different marking to providethe same visual indication.

In the fifth stage 425, the owner selects (e.g., by tapping the owner'sfinger on) the share button 160. The selection causes the pop-up menu145 to appear, as illustrated in the sixth stage 430. The menu 145includes the photo stream button 165 for creating a new photo stream oradding the selected images to an existing photo stream. To create a newphoto stream, the owner then selects the photo stream button.

FIG. 5 provides an illustrative example of specifying a name andsubscriber for a photo stream. Five operational stages 505-525 of theimage application are shown in this figure. The operations arecontinuations of the ones illustrated in FIG. 4. The first stage 505illustrates the image application after the owner has selected the photostream button 165 from the pop-up menu 145. The selection resulted inthe display of the photo stream options sheet 125. The photo streamoptions sheet includes a subscriber field 130 for inputting one or moresubscribers, and a name field for inputting a name for the photo stream.To input an email address of the subscriber, the owner then selects(e.g., by tapping the owner's finger on) the subscriber field 130.

The second stage 510 illustrates inputting a name of a subscriber intothe subscriber field 130. In particular, the owner begins to input(e.g., type in) an email address in the subscriber field 130 using theon-screen or virtual keyboard 140. Based on the input, the applicationprovides a list of suggested names 535 from the address book. Here, theauto-complete feature displays a name of a person. The name is shownwith the associated email address. The owner then selects the name fromthe list 535 to automatically fill in the subscriber field 130.

In the third stage 515, the owner selects (e.g., by tapping the owner'sfinger on) the name field 135 for inputting a name (e.g., title) of thenew photo stream. As shown in the fourth stage 520, the owner types in aname for the photo stream in the name field 135. In the fifth stage 525,the owner then selects the next button 134 to continue defining thephoto stream.

FIG. 6 provides an illustrative example of inputting a comment for animage in the new photo stream. Five operational stages 605-625 of theimage application are shown in this figure. These operations arecontinuations of the ones illustrated in FIG. 5. The first stage 605illustrates the comment sheet 150 that is shown after the selection ofthe next button 134. The comment field 155 remains empty, as the ownerhas not inputted any comment for an image (e.g., the first image) in thephoto stream. To input a comment, the owner selects the comment field155.

As shown in the second stage 610, the selection of the comment field 155causes an on-screen keyboard 140 to appear. The owner then types in acomment (e.g., “Summer Vacation”) into the comment field 155. Asmentioned above, the image sharing tools of some embodiments associatethe comment to the first image in the photo stream. In some embodiments,the image sharing tools provide separate fields to input comment fordifferent images. The image sharing tools of some embodimentsautomatically populates comment fields. For example, the comment fieldsmay be populated using the image filenames. In auto-populating thecomment fields, the image sharing tools may analyze the image filesnames to differentiate machine-generated names and user-specified names.Several example of such analysis will be described in detail below byreference to FIG. 58.

Returning to FIG. 6, the third stage illustrates the owner selecting(e.g., by tapping the user's finger on) the post button 136 to post orshare the photo stream. The fourth stage 620 illustrates the imageapplication displaying the photo stream menu 220. Here, the user selectsthe new photo stream (e.g., “Family Photos”) from the menu 220. Theselection causes thumbnail representation of the images in the new photostream to be displayed in the image display area 105, as illustrated inthe fifth stage 625.

When a new photo stream is defined, the application of some embodimentsgenerates a message regarding the new photo stream and sends thenotification to a control or push server. Based on the message, thecontrol server may respond with file location data (e.g., with one ormore URLs) to send the images to a storage server (e.g., a third-partystorage server). The application may also generate images to send to thestorage server. For example, the application may generate one or morelower resolution images from a stored image (e.g., raw image) and sendthose images to the storage server.

In some embodiments, the control server identifies each deviceassociated with the recipient (e.g., based on the recipient's emailaddress) and sends one or more messages or notifications regarding thephoto stream invitation. Once the recipient accepts the invitation, theimages are downloaded from the storage server onto each associateddevice. To more quickly display the images, the images may be downloadedto a recipient's device prior to the recipient accepting the invitation,and may be deleted from the device if the recipient rejects theinvitation.

Having described several example GUI operations, a process for creatingthe new photo stream will now be described. FIG. 7 conceptuallyillustrates an example process 700 that some embodiments use to create anew photo stream. The process 700, in some embodiments, is performed bythe image application.

The process 700 begins when it identifies (at 705) images for the photostream. In the example described above, the owner selects the imagesthrough an image display area. After identifying the images, the processidentifies (at 710) the name of the photo stream. Next, the process 700identifies (at 715) each recipient of the photo stream invitation.Examples of specifying a name of the photo stream and a recipient of thephoto stream invitation are described above by reference to FIG. 5.

The process 700 then determines (at 720) whether any comment has beenleft regarding an image (e.g., a first selected image) in the photostream. If a comment was made, the process 700 identifies (at 725) thecomment and associates it with the image. The process 700 then generates(at 730) a message regarding the new photo stream based on theidentifications. After generating the message, the process sends (at735) the message to a control server. In some embodiments, the controlserver facilitates the sharing of content by managing control dataassociated with a shared photo stream. Examples of such control datainclude user data (e.g., a list of devices associated with a user) andphoto stream data (e.g., a list of photo stream associated with theuser, a list of individuals that can access a particular photo stream,file location data).

A shown in FIG. 7, the process 700 receives (at 740) file location datafrom the control server. In some embodiments, the file location datacomprises one or more URLs to upload images to a storage server (e.g., athird-party storage server). After receiving the file location data, theprocess 700 sends (at 745) the images to a storage server using the filelocation data. The process 700 then ends.

In some embodiments, the process 700 generates one or more copies ofeach original image (e.g., RAW image) prior to sending them to thestorage server. That is, the process may take an image and generatedifferent versions (e.g., at different resolutions) of that same image.Depending on the type of client (e.g., digital media receiver, tablet,smart TV, etc.), one of several different versions of the same image maybe downloaded onto a client.

In some embodiments, the images are sent to the storage server whenthere is a particular type of network connection. For example, theimages may not be sent to the storage server when the device isconnected to the Internet through a cellular (e.g., a 3G, 4G)connection. That is, the device may send the image data to the storageserver when there is a different type of connection such as a Wi-Ficonnection. One reason for this is a smart phone or a tablet operates ina high-power state when transferring data using the cellular network. Onthe hand, the smart phone or tablet may operate in a low-power statewhen connected to the Internet through a wired connection or Wi-Ficonnection. As such, power consumption (e.g., battery consumption) isminimized.

In some embodiments, the process 700 generates and sends an emailmessage to each recipient. The email message may include a link thatwhen selected causes cause the recipient to be added as a subscriber tothe shared photo stream. Several examples of such an email will bedescribed below by reference to FIG. 9.

Some embodiments perform variations on the process 700. The specificoperations may not be performed in one continuous series of operations,and different specific operations may be performed in differentembodiments. For instance, the process 700 might not identify anycomment associated with an image. Also, the process 700 may generatemultiple messages (e.g., one regarding a new shared photo stream albumand another regarding a comment that was left for an image in the newshared photo stream) to send to the control server. Furthermore, theprocess 700 could be implemented using several sub-processes, or as partof a larger macro process.

B. Push Notifications

The previous examples illustrated creating a photo stream and sending aphoto stream invitation. FIG. 8A provides an illustrative example of howa recipient is notified of the photo stream invitation. This figure isfollowed by FIG. 8B which illustrates an example of the owner receivingnotification of the acceptance of the invitation. Three operationalstages 805-815 are illustrated in FIG. 8A.

The first stage 805 illustrates the recipient receiving notificationthrough his or her device (e.g., “Derek's Device”). This first stage 805occurs after the owner (e.g., “Emily”) has created the photo stream andsent the photo stream invitation. As shown, a banner 820 is displayed onthe recipient's device. Specifically, the banner is superimposed alongthe top edge of the operating system's desktop. In some embodiments, thebanner rotates into view as a simulated 3D effect. The banner may floaton top of the display area for a predetermined period of time and thendisappear (e.g., rotate out of view, fade away).

The banner 820 includes a message and an icon 825. The message statesthat there is a new shared photo stream. In addition, the message statesthat the photo stream's owner would like to share the photo stream withthe recipient. The owner is identified by the owner's name (e.g., “EmilyParker”), while the photo stream is identified by its name (e.g.,“Family Photos”). The icon 825 is the one associated with the imageapplication.

In conjunction with the icon, or instead of it, the application of someembodiments displays a thumbnail representation of an image in theshared photo stream. For example, the banner 820 may include a thumbnailrepresentation of the first image in the shared photo stream. Theapplication of some embodiments alerts the recipient through one or moreother means. For instance, the application may cause a device to vibrateor play a sound. When the device is in a locked mode, a pop-up window ordialog box with the message may appear in a lock screen.

In the first stage 805, the application displays a badge at theoperating system (“OS”) level to alert the recipient of an update to aphoto stream. At this level, the application may display one or moreother markings. One such type of notification is a badge that appears atleast partially over the application's icon. This is shown in the firststage 805 as a badge 830 is displayed on the icon 840 of the imageapplication. The badge 830 includes a number (e.g., “1”). In the exampleillustrated in the first stage 805, the number does not represent thenumber of new images in the photo stream. Instead, it indicates there isan update to a photo stream (e.g., there is a new photo streaminvitation, a batch of images has been added to an existing photostream, a new comment has been received regarding an image the existingphoto stream, etc.).

The first stage 805 illustrates the selection of the application icon840 (e.g., through a touch operation such as tapping the recipient'sfinger on the icon). As shown in the second stage 810, the selectioncauses the image application to be opened. The application displays thephoto stream menu 220. The user might have first selected the photostream tab 114 to display this menu. In the second stage 810, the menu220 lists the new photo stream (i.e., “Family Photos”) 845. Here, therecipient selects the photo stream 845 from the menu 220. The selectioncauses the application to display the pop-up menu 215, as shown in thethird stage 815. The recipient then accepts the photo stream invitationby selecting the accept button 250 from the pop-up menu 215.

In the example illustrated in the second stage 810, the recipientselects the photo stream from the photo stream menu 220 to display thepop-up menu 215. In some embodiments, the selection of the banner 825(shown in the first stage 805) opens the image application. Inconjunction with launching the application, the selection of the banner825 may cause the application to navigate to the photo stream menu 220and/or displays an invitation sheet (e.g., the pop-up menu 215).

The previous example illustrated an example notification that isdisplayed on the recipient's device. When a subscriber accepts aninvitation, the owner may also be notified of the acceptance of theinvitation. FIG. 8B provides an illustrative example of a notificationthat is pushed onto the owner's device (e.g., through the imageapplication).

As shown in FIG. 8B, a banner 835 is displayed on the owner's device.The banner 835 is superimposed along the top edge of the OS's desktop.The banner 835 includes a message that states that the recipient hassubscribed to the photo stream. The subscriber is identified by thesubscriber's name (e.g., “Derek Parker”), while the photo stream isidentified by its name (e.g., “Family Photos”). The owner's device mighthave received the subscriber's name and/or the photo stream's name froma message from the control server. In this example, a badge is notdisplayed over the image application's icon. This is because the photostream has not been updated. For instance, the subscriber has not addedany comments regarding the images in the photo stream.

In some embodiments, the application alerts the recipient through one ormore other means. For example, the application may cause a device tovibrate or play a sound to alert the user. When the device is in alocked mode, a pop-up window or dialog box with the message may appearin the lock screen.

As mentioned above, the application of some embodiments alerts therecipient through one or more other means. For instance, the applicationmay cause a device to vibrate or play a sound. When the device is in alocked mode, a pop-up window or dialog box with the message may appearin a lock screen. In some embodiments, the notifications are fullycustomizable in that the user can disable them (e.g., from theapplication settings menu). For example, the user can turn on or offnotification for certain updates (e.g., new comments, new photo streams,new images, etc.). The user can also specify whether to (1) display pushnotifications, (2) to display the notification as a banner or as analert (e.g., the message in a bubble), (3) whether to view thenotifications in the lock screen, (4) to play sound, and/or (5) badgethe application's icon. These customization features are described belowby reference to FIG. 28.

C. Email Notifications

In the example shown in FIG. 8A, the application displays a banner tonotify the recipient of the photo stream invitation. In conjunction withthe banner notification, or instead of it, an email message may be sentto the recipient upon creation of a new shared photo stream. In someembodiments, the image application generates the email message thatcontains a selectable link which when selected opens the imageapplication. The selection of the link may also cause the application tonavigate to the photo stream menu and/or may cause the recipient to beadded as a subscriber to the photo stream. In some embodiments, theemail message is always sent to each recipient that is invited to jointhe shared photo stream.

FIG. 9 provides an illustrative example of an email that is received atthe recipient's device. Four operational stages 905-920 of therecipient's device are illustrated in this figure. The first stage 905illustrates the selection of an icon 925 of an email application. In thesecond stage 910, the email application displays the email sent from theowner's device. The email includes (1) a message 935, (2) a link 940,and (3) a thumbnail image 930. The message 935 indicates that the ownershared a photo stream with the recipient. Specifically, it asks therecipient to join the owner's shared photo stream. The owner isidentified by the owner's name and email address, and the photo streamis identified by its associated name.

The thumbnail image 930 shows the icon of the image application. Theicon includes a marking or badge 945. The marking indicates that thereis a new photo stream or an update to an existing photo stream. The link940 is a selectable item for opening the image application. In someembodiments, the email includes a message that states that recipient hasto create an account with a cloud service in order to join the sharedphoto stream. To download the photo stream album, the recipient may haveto register his or her device with the cloud service.

In the second stage 910, the recipient selects (e.g., by tapping therecipient's finger on) the link 940. As shown in the third stage 915,the selection causes the image application to be opened. Specifically,the selection results in the display of the photo stream menu 220. Theselection also causes the recipient to be added as a subscriber to theshared photo stream. Accordingly, the recipient does not have to selectan accept button from an invitation sheet.

In the third stage 915, the subscriber selects the photo stream 950 fromthe photo stream menu 220. As shown in the fourth stage 920, theselection resulted in the display of the image display area 105. Theimage display area 105 shows thumbnail representations of the images inthe shared photo stream. In some embodiments, a return email may be sentto the owner once the recipient accepts the invitation. This returnemail may state that the recipient joined or subscribed to the sharedphoto stream. The owner may also be notified of the acceptance through anotification (e.g., a banner) that is displayed on the owner's device.An example of such a notification is described above by reference toFIG. 8B.

The previous example illustrated accepting an invitation to a sharedphoto stream through an email message. The image-sharing tool of someembodiments allows a first recipient to forward the invitation to asecond recipient. The second recipient can then subscribe to the sharedphoto stream by accepting the invitation. In some embodiments, the photostream invitation is associated with a one-time token that can be usedby only one individual. That is, the second recipient can take the placeof the first recipient. However, the first and second recipients cannotboth subscribe to the shared photo stream through the one photo streaminvitation.

FIG. 10 provides an illustrative example of a first recipient forwardingthe photo stream invitation to a second recipient. Two operationalstages 1005 and 1010 of the first recipient's device are illustrated inthis figure. In the first stage 1005, the email application has beenopened to display the email. The email includes the message 935, thelink 940, and the thumbnail image 930. The email application alsodisplays a bottom bar 1015. This bar includes a reply button 1020 forreplying to the email, a forward button 1025 for forwarding the email,and a delete button 1030 for deleting the email.

In the first stage, the first recipient selects the forward button 1025.As shown in the second stage 1010, the first recipient then forwards theemail to a second recipient (e.g., to “Joe Parker”).

FIG. 11A provides an illustrative example of the second recipientaccepting the photo stream invitation. Three operational stages1105-1115 of the second recipient's device are illustrated in thisfigure. The first stage 1105 illustrates the selection of an icon 925 ofan email application. In the second stage 1110, the email applicationdisplays the email forwarded from the first recipient's device. Theemail includes the message 935, the link 940, and the thumbnail image930.

In the second stage 1110, the second recipient selects (e.g., by tappingthe second recipient's finger on) the link 940. As shown in the thirdstage 1115, the selection causes the image application to be opened.Specifically, the selection results in the display of the photo streammenu 220. The selection also causes the second recipient to be added asa subscriber to the shared photo stream. Accordingly, the secondrecipient does not have to select an accept button from an invitationsheet.

FIG. 11B provides an illustrative example of a notification that ispushed onto the owner's device upon the second recipient subscribing tothe shared photo stream. As shown in, a banner 835 is displayed on theowner's device. The banner 835 is superimposed along the top edge of theOS's desktop. The banner 835 includes a message that states that thesecond recipient has subscribed to the photo stream. The subscriber isidentified by the second recipient's name (e.g., “Joe Parker”), and thephoto stream is identified by its name (e.g., “Family Photos”).

In some embodiments, the banner may state that a person using adifferent email address has joined the shared photo stream. The bannermay further state that the owner can remove the subscriber if the ownerdoes not recognize the person or the email address. Alternatively, orconjunctively with the notification, a return email may be sent to theowner once the second recipient accepts the invitation. This returnemail may include the same message as the banner.

D. Selecting and Viewing Photo Stream

In several examples described above, a recipient becomes a subscriber toa photo stream by accepting a photo stream invitation. FIG. 12 providesan illustrative example of how the images in the photo stream arepresented to the subscriber. Three operational stages 1205-1215 of thesubscriber's device are illustrated in this figure.

The first stage 1205 illustrates the image application displayingthumbnails representations of the image in the shared photo stream. Asmentioned above, the application of some embodiments displays a markingthat identifies the number of new image that are in the photo stream.This is shown in the first stage 1205 as a flag 275 is displayed overthe thumbnail 202 of the first new image. The flag is marked with textthat states that there are two new images in the photo stream. Theapplication of some embodiments displays such a marking for each newbatch of images. For example, when the owner adds a new batch of imagesto the photo stream, the application may display a similar flag on afirst thumbnail image that corresponds to the first image in the newbatch.

In some embodiments, the image application displays a visual indicationthat an image is associated with one or more comments. This visualindication may also indicate that there is at least one unread commentassociated with the image. In the example illustrated in the first stage1205, the first thumbnail 275 is displayed with a chat bubble 1220 thatis colored (e.g., blue). The chat bubble 275 indicates that there is oneor more comments associated with the corresponding image, and the colorof the chat bubble indicates that there is at least one unread commentassociated with the same image.

As shown in the first stage 1205, the subscriber selects the thumbnail202. The second stage 1210 illustrates that the selection resulted inthe display of a full-screen representation 1225 of the correspondingimage. The full-screen representation 1225 is overlaid by the top andbottom bars 210 and 370. The top bar 210 includes a back button 330 toreturn to the thumbnail view. The back button 330 is labeled with thename of the photo stream. The top bar 210 also states that the displayedimage 325 is a first of two images in the photo stream.

Different from the top bar 210, the bottom bar 370 includes (1) a sharebutton 345 to share the selected image, (2) a play button 350 to play aslide show of the images in the photo stream, and (3) a comment button360 to display the comment associated with the displayed image or leaveanother comment. In the example illustrated in FIG. 12, the commentbutton 360 is displayed with a chat bubble icon 375. The chat bubbleicon includes a number that identifies the number of comments associatedwith the displayed image.

In the second stage 1210, the user selects (e.g., swipes across) thescreen to display the next image. As shown in the third stage 1215, theselection causes the application to display the next image 1230. Theselection also causes the top and bottom bars to disappear. However, thechat bubble icon 375 remains at the same location. As the displayedimage is not associated with any comments, the number in the chat bubblehas been replaced by a “+” sign. The sign provides a visual indicationthat a comment can be added for the displayed image 1230. At any time,the subscriber can add a new comment by selecting the chat bubble.

In the example described above, the top and bottom bars 210 and 370disappear upon displaying the next image 1230. Alternatively, theapplication may remove these bars after a set period of time. Forinstance, in the second stage 1210, the top and bottom bars 210 and 370may automatically disappear once a predefined period (e.g., a fewseconds) has been reached.

E. Declining an Invitation

In several examples described above, a recipient becomes a subscriber toa photo stream by accepting a photo stream invitation. FIG. 13 providesan illustrative example of a recipient declining the photo streaminvitation. Three operational stages 1305-1315 of the recipient's deviceare illustrated in this figure.

The first stage 1305 illustrates the image application displaying thephoto stream menu 220. The menu 220 includes the photo stream 1320created by the owner. The recipient selects the photo stream 1320 fromthe photo stream menu 220. The selection causes the application todisplay a pop-up menu 215 in the second stage 1310. Included in thepop-up menu 220 is a decline button 255, which when selected, declinesthe invitation. As shown at this stage 1310, the recipient selects thedecline button 255 to decline the invitation. The third stage 1315illustrates the photo stream menu 220 after the recipient has declinedthe photo stream invitation. As shown, the selection of the declinebutton 255 results in the removal of the photo stream 1320 from thephoto stream menu 220.

F. Example Process

Having described accepting and declining a photo stream invitation, anexample process will now be descried. FIG. 14 conceptually illustrates aprocess 1400 that some embodiments use to accept or decline a photostream invitation. The process 1400, in some embodiments, is performedby the image application.

The process 1400 begins when it receives (at 1405), from a controlserver, a message regarding an update to a photo stream. After receivingthe message, the process 1400 retrieves (at 1410) a list of photostreams from the control server. Based on the list, the process 1400then notifies (at 1415) the recipient of the update. Several examples ofdifferent notifications or markings has been described above, includinga banner notification and a badged icon at the OS level, a marking(e.g., a blue dot) at the application's album level, etc. As mentionedabove, the recipient's device may also play a sound or vibrate uponreceiving the message.

At 1420, the process 1400 displays the photo stream invitation. Manydifferent examples of such a photo stream invitation are describedabove. For instance, the invitation may be a part of a pop-up windowwith buttons for accepting and/or declining the invitation. Differentfrom the pop-up window, the invitation may be an email message with oneor more selectable links for accepting and/or declining the invitation.In some embodiments, the photo stream invitation is displayed upon therecipient selecting a notification (e.g., a banner). Alternatively, theinvitation may be displayed upon the recipient selecting the photostream from a photo stream menu.

As shown in FIG. 14, the process 1400 awaits (at 1425) input from therecipient. If the invitation has been accepted, the process 1400 sends(at 1430) a message to the control server regarding the acceptedinvitation. In some embodiments, the control server receives the messageand adds the recipient as a subscriber in access list. In someembodiments, this access list lists each subscriber that is authorizedto view the images in the photo stream and make comments regarding thoseimages. The list may also specify whether the subscriber can add imagesto the photo stream, remove images, add subscribers to the photo stream,and/or remove subscribers from the photo stream.

After notifying the control server of the accepted invitation, theprocess 1400 retrieves (at 1435), from the control server, file locationdata (e.g., with one or more Uniform Resource Locators (“URLs”)) for theimages in the photo stream. Then, the process retrieves (at 1440) theimages from a storage server (e.g., a third-party storage server) usingthe location data. The process 1400 then ends.

At 1450, the process 1400 determines whether the recipient declined theinvitation. If the recipient declined the invitation, the process sends(at 1430) a message to the control server regarding the declinedinvitation. The process 1400 may also delete the photo stream from thelist of photo stream (e.g., that is represented in the photo streammenu). Based on the message, the control server of some embodimentsremoves the recipient from a list that lists different individuals thatare invited to join the photo stream.

If the recipient has not declined or accepted the invitation (e.g., byselecting a cancel button or closing the email message), the processmaintains (at 1460) the pending status of the invitation. As theinvitation is pending, the process 1400 may not remove the photo streamfrom the photo stream menu and/or the marking (e.g., the colored dot)that is displayed with the name of the photo stream in that photo streammenu.

Some embodiments perform variations on the process 1400. The specificoperations may not be performed in one continuous series of operations,and different specific operations may be performed in differentembodiments. Furthermore, the process 1400 could be implemented usingseveral sub-processes, or as part of a larger macro process.

II. Adding and Deleting Images

The image application of some embodiments provides tools to add ordelete images from a shared photo stream. When a participant of thephoto stream adds images, the images may be published to all of theparticipant's devices as well as the devices of other participants.Similarly, when the participant deletes images, the images may bedeleted from all of the participant's devices and the devices of theother participants. Several examples of adding and deleting images willnow be described by reference to FIGS. 15-20.

A. Adding an Image to a Photo Stream

FIG. 15 provides an illustrative example of adding an image to anexisting photo stream. Five operational stages 1505-1525 of the owner'sdevice are illustrated in this figure. In the first stage 1505, theimage display area 105 of the application displays thumbnailrepresentations of images from the camera roll collection. Here, theowner selects (e.g., by performing a gesture such as tapping the owner'sfinger on) the third thumbnail image 1525.

The second stage 1510 illustrates the image display area 105 after theowner has selected the thumbnail image 1525. The selection results inthe image display area 105 displaying a full screen representation 1530of the selected image. To share the image, the owner then selects theshare button 345. As shown in the third stage 1515, the selection causesthe pop-up menu 145 to appear. In some embodiments, the pop-up menu 145appears with animation by sliding up from the bottom of the screen. Theowner then selects the photo stream button 165 from the pop-up menu 145.

As shown in the fourth stage 1520, the selection of the photo streambutton 165 causes the application to display the photo stream menu 220.The photo stream menu 220 lists the existing photo stream 1535. The menu220 also lists an option 1540 to create a new photo stream. The top bar210 is superimposed on the photo stream menu 220. The top bar 210includes a cancel button 1545 to return to the previous view (e.g., thefull screen view illustrated in the second stage 1510). The top bar 210also includes a heading that states “Add to a Photo Stream”.Alternatively, the heading may indicate that a photo stream should bechosen. When there is no existing photo stream, the application of someembodiments displays the photo stream options sheet 125 that isdescribed above by reference to FIG. 1. This allows the owner to skipthe photo stream menu screen when creating a new photo stream.

In the fourth stage 1520, the owner selects (e.g., by tapping theowner's finger on) the photo stream 1535 from the menu 220. As shown inthe fifth stage 1525, the selection of the photo stream 1535 results inthe display of the comment sheet 150. The comment sheet 150 includes thefield 155 for inputting a comment for the selected image. A thumbnailrepresentation 1550 of the selected image is also shown on the commentsheet 150. To add the image to the photo stream, the owner then selectsthe post button 136.

In the example described above, the owner selects a single image 1525from the image display area 105. Alternatively, the owner can selectmultiple images from the image display area 105 (e.g., by selecting theedit button 118 in the thumbnail view). An example of selecting multipleimages has been described above by reference to FIG. 1.

When images are added to the photo stream, the subscriber may benotified of the additions. FIG. 16 provides an illustrative example ofdifferent markings (e.g., a banner notification, a badged icon) that aredisplayed on the subscriber's device. Two operational stages 1605 and1610 of the subscriber's device are illustrated in FIG. 16.

The first stage 1605 illustrates the different markings that are shownon the subscriber's device. This first stage 1605 occurs after the ownerhas added the image to the photo stream (e.g., as illustrated in FIG.15). Upon the owner adding the image, a banner 1615 is displayed on thesubscriber's device. In this example, the banner 1615 is superimposedalong the top edge of the operating system's desktop. In someembodiments, the banner 1615 rotates into view in a simulated 3D effect.The banner 1615 may float on top of the main display area for apredetermined period of time and then disappear (e.g., rotate out ofview or fade away).

The banner 1615 includes a heading and a message. The heading identifiesthe photo stream, and the message states there is a new image from theowner. In some embodiments, the message states that the owner has addedone new image to the photo stream. As shown, the photo stream isidentified by its associated name, and the owner is identified by theowner's name.

In the example illustrated in the first stage 1605, the banner 1615includes a thumbnail representation 1620 of the new image added to thephoto stream. In some embodiments, the application displays a thumbnailrepresentation of one image (e.g., the first image in the new batch)regardless of the number of images added to the photo stream.Alternatively, the application of some embodiments displays multiplethumbnail images of the images added to the photo stream. In someembodiments, the thumbnail representation 1620 is only displayed uponthe recipient accepting the invitation to the photo stream. Otherwise,the banner 1615 displays the icon of the image application in someembodiments.

As shown in the first stage 1605, the subscriber is also notifiedthrough the icon 435 of the image application that there is an update inthe photo stream. Specifically, the icon 435 is displayed with a markingor badge 830. Here, the badge 830 at least partially overlaps the icon435. The badge includes a number that indicates that a photo stream hasbeen updated. Hence, the number on the badge 830 does not represent thenumber of new images in the photo stream but represents the number ofphoto streams that are updated or new.

B. Deleting an Image from a Photo Stream

In the example described above, the owner adds a new image to a sharedphoto stream. FIG. 17 provides an illustrative example of deleting animage from the photo stream. Six operational stages 1705-1730 of theowner's device are illustrated in this figure. In the first stage 1705,the application displays the photo stream menu 220. The photo streammenu 220 lists the photo stream 1735. To modify the photo stream, theowner selects (e.g., by performing a gesture such as tapping the owner'sfinger on) the photo stream 1735.

As shown in the second stage 1710, the selection of the photo stream1735 results in the application displaying the image display area 105.The image display area 105 displays thumbnail representations of images1733, 1736, and 1738 in the photo stream. This is indicated by the topbar 210, which displays the name of the selected photo stream. The ownerthen selects the second thumbnail image 1736 to display a full screenrepresentation of the same image.

The third stage 1715 illustrates the image display area 105 after theowner has selected the thumbnail image 1736. The selection results inthe image display area displaying a full screen representation of theselected image. The selection also causes the application to displayseveral contextual menu items. These menu items are displayed on thebottom bar 370. In the example illustrated in the third stage 1715, thebottom bar 370 includes the share button 345 for sharing the displayedimage, the play button 350 for playing a slide show of the images in thephoto stream, the stream button 355 for streaming the images in thephoto stream to one or more other devices (e.g., a desktop computer, alaptop), the delete button 1740 for deleting the image from the photostream, and a comment button 360 to leave a comment regarding thedisplayed image. In some embodiments, the delete function is onlyavailable to the user that created the photo stream. As such, thesubscriber may not be able to access this button 1740 on thesubscriber's device when viewing the photo stream. In other words, thebutton 1740 may not be displayed at all on the bottom bar 370.

In the third stage 1715, the owner selects the delete button 1740. Theselection of the delete button causes a pop-up menu 1745 to bedisplayed, as illustrated in the fourth stage 1720. The pop-up menu 1745includes (1) a confirmation button 1750 to confirm deleting the selectedimage from the photo stream and (2) a cancel button 1755 to cancel thedelete operation (i.e., the delete operation initiated by selecting thedelete button 1740). As shown, the pop-up menu 1745 includes a warningmessage or a prompt stating that the image will be deleted from all ofthe owner's devices and the subscribers' devices.

In the fourth stage 1720, the owner selects the delete button 1750 fromthe pop-up menu 1745. The fifth stage 1725 illustrates the owner'sdevice after deleting the selected image from the photo stream. As thesecond image 1736 has been deleted, the application displays a fullscreen representation of the next image 1738 in the photo stream. Theowner then selects the back button 330 to return to the thumbnail view.As shown in the sixth stage 1730, the image display area 105 displaysonly two thumbnail images 1733 and 1738 because the second image 1736has been deleted from the photo stream.

In the previous example, the owner deletes an image from the owner'sdevice. FIG. 18 provides an illustrative example of the photo stream onthe subscriber's device after the owner deletes the image. Twooperational stages 1805 and 1810 of the subscriber's device areillustrated in this figure.

As shown in the first stage 1805, the subscriber's device displays thephoto stream menu 220. The subscriber might have selected theapplication's icon from the desktop and then navigated to the photostream menu 220. When one or more images are deleted from the photostream, the subscriber may not be notified of this update. For instance,a banner notification may not be shown on the subscriber's device and/ora badge may not be shown on the application's icon.

In the first stage 1805, the subscriber selects the photo stream 1815from the photo stream menu 220. The selection causes the application todisplay thumbnail representations of the images in the photo stream. Asthe second image 1736 has been deleted (e.g., by the owner), the imagedisplay area only displays representations of the remaining two images1733 and 1738.

C. Example Processes

Having described adding and deleting images from a shared photo stream,several example processes will now be described by reference to FIGS. 19and 20. FIG. 19 conceptually illustrates a process 1900 that someembodiments use to add or delete images from a photo stream. The process1900, in some embodiments, is performed by the image application (e.g.,executing on the owner's device).

The process 1900 begins when it receives (at 1905) input to modify aphoto stream. The process 1900 then determines (at 1910) whether a newbatch of images has been added to the photo stream. If not, the process1900 proceeds to 1935, which is described below. If so, the process 1900generates (1915) a message regarding the new batch of images. Aftergenerating the message, the process 1900 sends (at 1920) the message toa control server. As mentioned above, the control server facilitates thesharing of content by managing control data associated with a sharedphoto stream. Examples of such control data include user data (e.g., alist of devices associated with a user) and photo stream data (e.g., alist of photo stream associated with the user, file location data). Thecontrol data may also include a subscriber list that lists individualsthat can access a particular photo stream. The subscriber list may alsospecify whether a subscriber can add images to the photo stream, removeimages, add subscribers to the photo stream, make comments, and/orremove subscribers from the photo stream.

As shown in FIG. 19, the process 1900 receives (at 1925) file locationdata from the control server. In some embodiments, the file locationdata includes one or more URLs to upload the images to a storage server(e.g., a third-party storage server). Once the file location data isreceived, the process 1900 sends (at 1930) the images to the storageserver using the file location data.

At 1935, the process 1900 determines whether any images have beendeleted from the photo stream. If not, the process 1900 proceeds to1950, which is described below. If so, the process 1900 generates (1940)a message regarding the deleted images. After generating the message,the process 1900 sends (at 1945) the message to a control server. Basedon the message, the control server may disassociate the images from thephoto stream. For instance, the control server may remove references tothose images from a photo stream list that lists all images associatedwith the photo stream.

When the modification is another type of modification, the process 1900modifies (1950) the photo stream based on the input. Examples of suchmodifications include adding a new subscriber, deleting a currentsubscriber, deleting the photo stream, changing the photo stream's name,etc. Similar to adding and deleting images, the application of someembodiments generates and sends a message to the control server based onthe modification. The control server then makes changes to the sharedphoto stream. For instance, the control server may remove a subscriberfrom a subscriber list that lists all individuals that are able toaccess the photo stream. Several examples of such modifications aredescribed below in detail in Section III.

FIG. 20 conceptually illustrates a process 2000 that some embodimentsperform when a participant adds images to or deletes images from a photostream. The process 1900, in some embodiments, is performed by the imageapplication (e.g., executing on the subscriber's device). The process2000 begins when it receives (at 2005), from a control server, a messageregarding an update to a photo stream.

After receiving the message, the process 2000 retrieves (at 2010) a listof photo streams from the control server. Based on the list, the process2000 then notifies (at 2015) the subscriber of the update. In someembodiments, the process 2000 only notifies a participant of certaintypes of updates and ignores other updates. For instance, the process2000 might display a notification if a new image has been added to thephoto stream. On the other hand, if an image has been deleted, theprocess 2000 might not display any notifications. The application ofsome embodiment allows its user to specify what type of events (e.g.,new comment, new image, new subscriber, etc.) triggers a notification.

As shown in FIG. 20, the process 2000 determines (at 2020) whether newimages have been added to the photo stream. If not, the process 2000proceeds to 2025, which is described below. If so, the process 2000retrieves (at 2035) file location data from the control server. Theprocess 2000 then retrieves (at 2040) the images from a storage serverbased on the file location data. At 2025, the process 2000 determineswhether any images have been deleted from the photo stream. If so, theprocess 2000 deletes (at 2030) the local copies of the images from thephoto stream. Otherwise, the process 2000 ends.

Some embodiments perform variations on the processes 1900 and 2000. Thespecific operations of each of these processes may not be performed inone continuous series of operations, and different specific operationsmay be performed in different embodiments. Furthermore, the processes 19and 20 could be implemented using several sub-processes, or as part of alarger macro process.

III. Photo Stream Management

In the examples described above, a participant modifies a photo streamby adding and deleting images. The image application of some embodimentsprovides a variety of different tools that allow a participant to managea photo stream. In some embodiment, the management entails (1) resendingan invitation to a recipient who has not responded, (2) adding a newsubscriber, (3) deleting a current subscriber, and/or (4) deleting thephoto stream. Several examples of these photo stream management featureswill now be described by reference to FIGS. 21-28.

A. Resending an Invitation

FIG. 21 provides an illustrative example of resending a photo streaminvitation to a recipient who has not accepted or declined theinvitation. Specifically, this figure illustrates in five operationalstages 2105-2125 how an owner can use the image application to resendthe invitation. This figure includes the photo stream menu 220 thatlists one or more photo streams. The figure also includes an edit menu2130.

The edit menu 2130 provides several different tools to modify a photostream. As shown, the edit menu 2130 includes a name field 2135, asubscriber section 2140, a public website control 2145, and a deletebutton 2150. The name field 2135 is an area in the edit menu 2130 thatdisplays the name of the photo stream. In some embodiments, the namefield 2135 can be used to edit the name of the photo stream. Forexample, the owner can select the name field 2135 to display a virtualor onscreen keyboard. The owner can then use the virtual keyboard tomodify the name of the photo stream. The delete button 2150 can be usedto delete the selected photo stream.

The subscriber section 2140 displays a list of individual that have beeninvited to join the photo stream. Specifically, the section lists thename of each person along with a corresponding subscription status. Insome embodiments, the different subscription statuses include pending(e.g., invited), declined, and accepted. The owner can select any personfrom the list to remove the person as a subscriber, or resend theinvitation if the person has not accepted or declined the invitation. Asshown in FIG. 21, the subscriber section includes an add people control2155. The owner can select this control to invite other people to jointhe photo stream.

In some embodiment, the application provides tools to publish the photostream's images to a website (e.g., a public website). That is, insteadof pushing the images to each participant's device, the images can bedisplayed in a web browser by accessing the website. To facilitate webpublication, the edit menu 2130 includes the public website control2145. The owner can select or toggle this control 2145 to publish theshared photo stream to the website. For example, the owner can selectthe control 2145 to turn on or off the public website feature. Whenturned on, the application of some embodiments displays the URLassociated with the photo stream's website. Several examples ofpublishing images to the website will be described in detail below byreference to FIGS. 38-48.

In conjunction with one or more of the menu items, or instead of them,the image sharing tools of some embodiments allows the owner to controluser access to the photo stream. For example, the owner can control readand write access by specifying one or more individuals that can addimages to and/or remove image from the photo stream. The image sharingtools of some embodiments allows the owner to control commenting (e.g.,which subscriber can or cannot leave comments, etc.).

Having described the edit menu 2130, the operations of resending aphotos stream invitation will now be described by reference to the stateof the application's GUI during the five stages 2105-2125 that areillustrated in FIG. 21. In the first stage 2105, the owner's device isdisplaying the photo stream menu 220. The photo stream menu 220 includesa selectable item 2182 (e.g., a colored icon with a directional arrow)for the shared photo stream. This item 2182 can be selected to displaythe edit menu 2130 for the corresponding photo stream. Instead of theselectable item, the application of some embodiments includes an editbutton 2160 for entering the photo stream editing mode.

In the first stage 2105, the owner selects the selectable item 2182associated with the “Family Photos” photo stream. As shown in the secondstage 2110, the selection of the selectable item 2182 causes theapplication to display the edit menu 2130. The edit menu 2130 displaysthe name of the selected photo stream in the name field 2135. Thesubscriber section 2140 includes a list of people that have been invitedto the photo stream. The list includes “Derek Parker” and “SusanParker”. The subscriber section also displays the subscription statusbelow the name of each individual. Specifically, the statuses indicatethat Derek Parker has accepted the invitation, while Susan Parker'sinvitation status is pending (e.g., invited).

In the third stage 2115, the owner selects (e.g., by tapping the owner'sfinger on) the recipient “Susan Parker” from the subscriber section2140. The selection causes the application to display the subscribermenu 2175, as illustrated in the fourth stage 2120. The subscriber menu2175 is overlaid by the top bar 2180. The top bar 2180 includes a backbutton 2185 to return to the previous view. The top bar 2180 alsoincludes a heading that states the name of the subscriber.

The subscriber menu 2175 includes (1) an email field 2190, (2) a resendinvitation button 2195, and (3) a remove subscriber button 2196. Theemail field 2190 displays the email address of the recipient. The ownercan also use this field to modify the email address of the recipient.The resend invitation button 2195 can be used to resend the invitationto the recipient. The remove subscriber button 2196 can be used toremove the recipient or subscriber from the photo stream.

As shown in the fourth stage 2120, the owner selects the resendinvitation button 2195 to resend the photo stream invitation. When theinvitation is resent, the recipient's device may display one morenotifications of the invitation. For example, the recipient's device mayre-display a banner stating that the owner shared a photo stream withthe recipient. Alternatively, or conjunctively with the banner, an emailmessage may be sent to the recipient's device regarding the photo streaminvitation. As mentioned above, the email may include a link that whenselected adds the recipient as a subscriber to the photo stream.

B. Adding a Subscriber

In the example described above, an owner uses the image application toresend an invitation to a recipient. The image application of someembodiments allows the owner to add additional subscribers. FIG. 22provides an illustrative example of sending an invitation to anotherrecipient to join the shared photo stream. Three operational stages2205-2215 of the owner's device are illustrated in this figure.

In the first stage 2205, the application displays the photo stream editmenu 2130. The menu includes the add people button 2155. To add asubscriber, the owner selects (e.g., by tapping the owner's finger on)the add people button 2155. The selection causes a virtual or on-screenoverlay keyboard 140 to be displayed, as illustrated in the second stage2210. The owner then begins to input an email address of the subscriber.Based on the input, the application displays, in a suggestion field 535,a contact from the owner's contacts list or address book. The name ofthe contact is shown with the contact's associated email address. Theowner can selects the name from the list 535 to automatically fill inthe subscriber field 130.

The third stage 2215 illustrates the photo stream edit menu 2130 afterthe owner has specified another recipient to join the photo stream. Thename of the recipient is listed in the subscriber section 2140.Specifically, the name is listed with the pending status (e.g., invitedstatus), as the person has not yet accepted the photo stream invitation.

C. Removing a Subscriber

In the example described above, the owner uses the image application toinvite a person to join the shared photo stream. The image applicationof some embodiments allows the owner to remove subscribers from thephoto stream. This includes the recipients that have not yet respondedto the photo stream invitation. FIG. 23 provides an illustrative exampleof removing a subscriber. Four operational stages 2305-2320 of theowner's device are illustrated in this figure.

In the first stage 2305, the application displays the subscriber menu2175. As shown, the top bar 2180 includes the heading that states thename of the person that subscribed to the photo stream. The menu 2175also includes the remove subscriber button 2196 for removing thesubscriber. As the person has subscribed to the photo stream, the resendinvitation button is not shown in the subscriber menu 2175. To removethe subscriber, the owner selects the remove subscriber button 2196.

The second stage 2310 illustrates the application after the owner hasselected the remove subscriber button 2196. Here, the applicationdisplays a pop-up window 2335 (e.g., an action sheet). The pop-up windowstates that the photo stream and its images will be removed from all ofthe subscriber's devices. Here, the owner selects a confirmation button2330 to confirm removing the subscriber.

In the third stage 2315, the application is awaiting confirmation of theremoval from a server (e.g., the control server) that maintains the listof individuals (e.g., an access list) associated with the photo stream.The menu is overlaid by a prompt 2320 that indicates that the individualis being removed. The application also displays a spinner 2325 whileawaiting confirmation of the removal. However, the application maydisplay one or more other graphical symbols (e.g., an hourglass) or textto convey the same meaning.

The fourth stage 2320 illustrates the photo stream edit menu 2130 afterthe subscriber has been removed from the photo stream. As shown, thename of the subscriber is no longer listed in the subscriber section2140.

D. Deleting a Photo Stream

In some embodiments, the image application allows an owner to delete aphoto stream. FIG. 24 provides an illustrative example of deleting aphoto stream. Four operational stages 2405-2420 of the owner's deviceare illustrated in this figure.

In the first stage 2405, the application displays the photo stream editmenu 2130. The menu includes the delete button 2150 for deleting a photostream. The owner has previously selected the photo stream from thephoto stream menu (not shown). To delete the photo stream, the ownerselects the delete button 2150.

As shown in the second stage 2410, the selection of the delete button2150 results in the display of the pop-up window 2430. The pop-up window2430 includes a confirmation button 2435 to delete the photo stream anda cancel button 2440 to cancel the delete operation. The pop-up window2430 also includes a message stating that the photo stream will bedeleted from all the owner's devices and the subscribers' devices. Thephoto stream is identified by its name in the message. Here, the ownerselects (e.g., by performing a gesture such as tapping the owner'sfinger on) the confirmation button 2435 to confirm deletion of the photostream.

The third stage 2415 illustrates the owner's device after the owner hasselected the confirmation button 2435. The application displays a prompt2450 stating that the photo stream is being deleted. The photo stream isalso displayed with a spring wheel or spinner 2455 indicating that it isawaiting confirmation of the delete operation. In some embodiments, theconfirmation is sent from the control server to the owner's device. Thefourth stage 2420 illustrates the photo stream menu 220 after the photostream has been deleted. As the “Family Photos” photo stream has beendeleted, it is not listed in the photo stream menu 220.

E. Unsubscribing

In several of the examples described above, the owner is allowed tomodify a photo stream by resending an invitation to a recipient, addinga subscriber, removing a subscriber, and deleting the photo stream. Incontrast to the owner, the application of some embodiments preventssubscribers from performing one or more of these operations. However,the application of some embodiments allows the subscriber to unsubscribefrom the photo stream.

FIG. 25 provides an illustrative example of unsubscribing from a photostream. Five operational stages 2505-2525 of the subscriber's device areillustrated in this figure. In the first stage 2505, the imageapplication displays the photo stream menu 220. The photo stream menu220 lists the “Family Photos” photo stream 2535. To display the editmenu 2130, the subscriber selects the selectable item 2182.

As shown in the second stage 2510, the selection results in the displayof the edit menu 2530. Different from the edit menu described above,this menu includes only the subscriber section and a unsubscribe button2555. That is, it does not include menu items to remove or add asubscriber, resend an invitation, rename a photo stream, etc. This isbecause the subscriber is not the owner of the photo stream. In thisexample, the subscriber can unsubscribe from the photo stream but haslimited control over managing the photo stream. As mentioned above, theimage sharing tools may allow an owner of the photo stream to specifyaccess privileges. For example, the owner can specify whether thesubscriber can add images to the photo stream, remove images, addsubscribers to the photo stream, and/or remove subscribers from thephoto stream.

In some embodiments, the name of the subscriber 2540 can be selectedfrom the subscriber section 2140. The selection results in the displayof the subscriber menu (not shown). The subscriber menu may include anemail field that displays the email address of the subscriber. In someembodiments, the application allows the subscriber to modify or updatethe email using this field. One example of such a subscriber menu hasbeen described above by reference to FIG. 21.

In the second stage 2515, the subscriber selects (e.g., by performing agesture such as tapping the subscriber's finger on) the unsubscribebutton 2555. As shown in the third stage 2515, the selection results inthe display of a pop-up window 2560. The pop-up window 2560 includes aconfirmation button 2565 to confirm unsubscribing from the photo streamand a cancel button 2570 to cancel the unsubscribe operation. The pop-upwindow 2560 also includes a message stating that the photo stream willbe deleted from all of the subscribers' devices.

As shown in the third stage 2515, the owner selects (e.g., by performinga gesture such as tapping the owner's finger on) the confirmation button2565 to confirm unsubscribing from the photo stream. When the input isreceived, the application of some embodiments generates a message havinginformation (e.g., a user ID such as an email address) to unsubscribethe subscriber. The message is then sent to the control server. Afterreceiving the message, the control server may remove the user ID from anaccess list associated with the photo stream. As mentioned above, theaccess list contains a list of authorized individuals that are able toaccess the photo stream.

The fourth stage 2520 illustrates the subscriber's device after thesubscriber has selected the confirmation button 2560. The applicationdisplays a prompt 2575 indicating that the photo stream is beingremoved. The photo stream is also displayed with a spring wheel orspinner 2580 indicating that it is awaiting confirmation of theunsubscribe operation. The fifth stage 2525 illustrates the photo streammenu 220 after the unsubscribe operation. As the subscriber has beenunsubscribed from the photo stream, the “Family Photos” photo stream isremoved from the photo stream menu 220.

F. Parental Control

The image application of some embodiments provides tools to setrestrictions or parental controls for one or more of its features. Insome embodiments, the restrictions include preventing a user of a devicefrom sending and receiving photo stream invitations. FIG. 26 provides anillustrative example of preventing the user from receiving photo streaminvitations. Four operational stages 2605-2620 of the user's device areillustrated in this figure.

The first stage 2605 illustrates the device 400 displaying a desktopgraphical user interface of its operating system. The operating system'sdesktop includes several selectable icons of different applications(e.g., image application, camera application). The desktop also displaysan icon 2625 for the settings menu. To open the settings menu, the userselects the icon 2625 from the desktop.

The second stage 2610 illustrates the settings menu 2630 after the userhas selected the icon 2625. As shown, the settings menu 2630 displays“General” in the heading, under which different general settingsrelating to the operating system and/or the device are displayed. Theuser might have navigated to this section from a main settings menu (notshown). The general section includes a selectable item 2635 for settingrestrictions or parental controls. To set restrictions, the user selectsthe item 2635 from the general section of the settings menu 2630.

The third stage 2615 illustrates the user's device after the selectionof the selectable item 2635. The selection causes a passcode field 2640and the virtual or on-screen keyboard 140 to appear. The passcode field2640 is for restricting unwanted users (e.g., children) from makingchanges to device or application settings. The user then uses thekeyboard 140 to type the passcode into the passcode field 2640.

Once the correct passcode is entered, the settings menu 2630 displaysthe restriction section 2650 as illustrated in the fourth stage 2620.The restriction section 2650 includes a list of restriction controls fordifferent applications. To simply the discussion, only two restrictioncontrols related to the image application area shown in the fourth stage2620. Specially, the restriction section 2650 includes a send invitationcontrol 2655 (e.g., toggle switch) to turn on or off the send invitationfeature. The restriction section 2650 also includes a receive invitationcontrol 2660 to turn on or off the receive invitation feature. Each ofthese controls 2655 and 2660 is displayed with an icon that indicatesthat the control is associated with the image application. As shown inthe fourth stage 2620, the user selects the receive invitation control2660 to prevent any user of the device from receiving photo streaminvitations.

In the previous example, the user places restrictions on receiving photostream invitations. Alternatively or conjunctively, the image sharingtools allow the user to freeze or lock a cloud service account in itscurrent state. By locking the account, the user cannot create a newphoto stream (e.g., with the user's device associated with the account)or become a subscriber to another photo stream. In some embodiments, themaster account lock is provided in the restriction section 2650. Forexample, instead of the controls 2655 and 2660, the restriction section2650 may include a “Don't Allow Changes” option for locking the accountits current state or an “Allow Changes” option for unlocking theaccount.

In conjunction with the restriction controls or instead of it, the imageapplication of some embodiments provides tools to specify whether aparticular device can be used to create a shared photo stream and tosubscribe to different shared photo stream. FIG. 27 provides anillustrative example of turning off such shared photo stream features.Two operational stages 2705 and 2710 of the user's device areillustrated in this figure.

In the first stage 2705, the device is displaying a settings menu 2715for managing cloud services associated with an account. Examples of suchcloud services include cloud storage service, synchronizing data acrossuser devices, etc. The settings menu 2715 includes an account tab 2720that can be selected to view account information (e.g., account paymentinformation, available storage space). The settings menu 2715 alsoincludes a photo stream menu item 2725 for displaying a photo streamsettings menu 2740. The photo stream menu item 2725 is displayed withtext that indicates that the personal photo stream and/or the sharedphoto stream is currently turned on.

The first stage 2715 illustrates the user selecting the photo streammenu item 2725. As shown in the second stage 2710, the selection causesthe image application to display the photo stream menu 2740. This menuincludes a first control 2730 (e.g., a toggle switch) for turning on oroff the personal photo stream feature (e.g., device to device syncing).The first control 2730 is displayed with text that indicates that, whenthe control is turn on, the new images (e.g., captured or importedimages) will automatically be uploaded and sent to one or more otherdevices associated with the cloud service account.

In addition, the menu 2740 includes a second control 2735 (e.g., atoggle switch) for turning on or off the shared photo stream feature.The second control is displayed with text that indicates that, when thecontrol has been turned on, the device can be used to create new photostreams to share with other people, or subscribe to other people's photostream. In the example illustrated in the second stage 2710, the userselects the second control 2735 to turn off the shared photo streamfeature.

G. Managing Notifications

The image application of some embodiments provides different tools tomanage notifications. These tools can be used to specify whether abanner is displayed, an alert is shown, and/or a sound is played (e.g.,when a new comment has been received for a photo stream, when there is anew photo stream invitation, etc.). The application of some embodimentsallows the user to granularly manage notification by implementing awhitelist feature. The whitelist feature allows the user to specifywhether photo stream notifications are presented for everyone orpresented for only those entities that are listed in the user's contactlist.

FIG. 28 provides an illustrative example of turning on the whitelistfeature. Two operational stages 2805 and 2805 of the user's device areillustrated in this figure. In the first stage 2805, the device isdisplaying a notification section 2815. The user might have navigated tothis section from the main settings menu. In this section, the user canselect an application to manage different notifications (e.g., banner,sound, badge, etc.). As shown, the image application is listed in thelist of applications 2870.

In the first stage 2805, the user selects the image application from thelist 2870. The second stage 2810 illustrates the device after theselection of the image application from the notification section 2815.The selection results in the display of the image application'snotification menu 2820. The menu includes multiple controls 2825-2865for managing notifications. This menu 2820 includes a control 2835 toturn on or off a notification center and a control 2840 to specify thenumber of notifications to show in the notification center. In someembodiments, the notification center is a display area that listsdifferent notifications.

As shown in the second stage 2810, the menu 2820 includes selectableitems 2845-2855 for turning on or off banner notification and alerts.The menu 2820 also includes a control 2860 to turn on or off badgingicons (e.g., with a number), and a control 2865 to turn on or offplaying sound. Lastly, the menu 2820 includes selectable items 2825 and2830 for switching between receiving alerts from everyone or from onlythose in the user's contacts. In the second stage 2810, the user selectsthe selectable item 2830 to display alerts for only those in the user'scontact list.

IV. Commenting

In some embodiments, the image application provides tools to sharecomments regarding images in the photo stream. Several examples ofsharing comments will now be described by reference to FIGS. 29-37.

A. Exchanging Comments

FIG. 29 provides an illustrative example of leaving a comment regardingan image in a shared photo stream. Six operational stages 2905-2930 ofthe owner's device are illustrated in this figure. The first stage 2905illustrates the image display area 105, which includes thumbnailrepresentations of images. As indicated by the heading 2935, thethumbnails represent images associated with the photo stream (e.g.,“Family Photos”). The owner might have first selected the name of thephoto stream from the photo stream menu (not shown) to display thesethumbnail images. To leave a comment for an image, the owner selects thecorresponding thumbnail image 2940 from the image display area 105.

As shown in the second stage 2910, the selection causes the imagedisplay area 105 to display a full screen representation 2945 of thecorresponding image. The selection also causes the top and bottom bars210 and 370 to be modified. The top bar 210 includes a back button 330to return to the thumbnail view. The top bar 210 also includes a headingthat states that the displayed image 2945 is the second of two images inthe photo stream. The top bar 210 may also include an edit button thatwhen selected provides different editing tools to edit the displayedimage. In some embodiments, the editing entails enhancing the image,removing red eye from the image, and/or cropping the image.

Different from the top bar 210, the bottom bar 370 includes (1) a sharebutton 345 for sharing the selected image, (2) a play button 350 forplaying a slide show of the images in the photo stream, (3) a deletebutton 1740 for deleting the image from the photo stream, and (4) acomment button 360 for leaving comments regarding the displayed image.The bottom bar may also include a stream button (not shown) forstreaming the images in the photo stream to one or more other devices(e.g., a desktop computer, a laptop). In the example illustrated in thesecond stage 2910, each item in the bottom bar 370 is displayed with acorresponding icon. For example, the comment button 360 is displayedwith a chat bubble icon 375. The chat bubble icon 375 includes a plussign (i.e., “+”) that provides a visual indication that a comment can beadded for the displayed image 325.

As shown in the second stage 2910, the owner selects the comment button360. The selection causes a virtual or on-screen overlay keyboard 140 toappear, as illustrated in the third stage 2915. The owner then types ina comment regarding the image 2945 in a comment field 155. The postbutton 2950 may also change its appearance when the owner types in acharacter in the comment field. Here, the owner types in a comment intothe comment field and selects the post button 2950. In some embodiments,the application provides a selectable item for deleting a comment. Forexample, the application may display a delete button next to a comment.The delete operation can only be performed by the person that left thecomment, in some embodiments.

The fifth stage 2925 illustrates the image display area 105 afterposting the comment. As shown, the comment is displayed over the image2945. The comment is also associated with metadata. The metadata isdisplayed below the comment, and identifies the person that left thecomment and the time the comment was left. As shown in the fifth stage2925, the person who left the comment is identified as “Me”. This isbecause the owner left the comment with his or her device. The commentis also displayed with an add comment field 365 that can be selected toadd additional comments.

In the example illustrated in the fifth stage 2925, the top and bottombars 210 and 370 disappear upon selection of the post button 2950.However, the chat bubble icon 375 remains in the same position. Asshown, the “+” sign has been replaced with the number “1”, and the colorof the chat bubble icon has been changed from a first color (e.g.,white) to a second different color (e.g., blue). The number identifiesthe number of comments associated with the image. The color of the iconindicates that the image application is in a comment displaying mode.Here, the owner can select the chat bubble icon to (1) hide the comment,(2) hide the add comment field 365, and (1) return the chat bubble iconto its first color (e.g., white). In some embodiments, the numberremains visible on the chat bubble icon (e.g., by changing color).

Upon posting, the comment is pushed to all devices of participantsassociated with the photo stream. FIG. 30 provides an illustrativeexample of how the comment appears on a subscriber's device. Sixoperational stages 3005-3030 of the subscriber's device are illustratedin this figure. In the first stage 3005, the subscriber's devicedisplays the desktop of its operating system. The desktop includes theicon 435 for opening the image application. In this example, the icon435 does not display any marking indicating that there are one or moreupdates to the photo stream. For instance, the icon 435 is not overlaidby a badge with a number indicating that a photo stream has beenupdated. As will be described in detail by reference to FIG. 31, theapplication of some embodiments displays a marking on the icon 435 whenthe subscriber has participated in the conversation (i.e., previouslyleft a comment regarding the same image).

As shown in the first stage 3005, the subscriber selects the icon 435 toopen the image application. The second stage 3010 illustrates theapplication's photo stream menu 220. The subscriber might havepreviously selected the photo stream tab 114 to display this menu.Different from the desktop icon 435, the name of the photo stream islisted with a marking 3040. The marking 3040 provides a visualindication to the subscriber that there is one or more updates to thephoto stream. In the example illustrated in the second stage 3010, themarking 3040 is a blue dot. However, different types of markings can beused to convey the same meaning. For instance, the icon 285 of the“Photo Stream” tab 114 can be badged with a number 280 that indicatesthat there is an update to a photo stream.

In the second stage 3010, the subscriber selects the photo stream 3045from the menu 220. The selection causes the application to display theimage display area 105, as illustrated in the third stage 3015. Theimage display area 105 includes thumbnail representations and of imagesin the photo stream 3045. The application of some embodiments provides avisual indication that an image is associated with one or more comments.This is shown in the third stage 3015 because the second thumbnail image3050 is displayed on the image display area 105 with a marking 3055. Inthe example illustrated in the third stage 3015, the marking 3055 is achat bubble that is displayed at least partially over the image 3050.The chat bubble is also colored (e.g., blue). The color provides avisual indication to the subscriber that there is an unread commentassociated with the corresponding image.

As shown in the third stage 3015, the subscriber selects the thumbnailimage 3050. The selection causes the image display area 105 to display afull screen representation 3060 of the corresponding image. Theselection also causes the comment button 360 to appear along the bottombar 370. The comment button 360 contains a chat bubble icon 375. Thechat bubble icon 375 is colored white and includes a number “1”. Thenumber represents the number of comments associated with the image. Todisplay the comment, the subscriber selects the comment button 360.

The fifth stage 3025 illustrates the image display area 105 after theselection of the comment button 360. As shown, the comment is displayedover the image 3060. The comment is also associated with metadata. Themetadata is displayed below the comment, and identifies the person wholeft the comment and the time when the comment was left. In the exampleillustrated in the fifth stage 3025, the person who left the comment isidentified as “Emily Parker”.

In the fifth stage 3025, the subscriber selects the comment field 365 toadd another comment. The sixth stage 3030 illustrates the subscriberleaving another comment. Specifically, the comment is inputted into thecomment field using the on-screen keyboard 140.

In the example described above, the subscriber is notified of the updateto the photo stream after opening the image application and navigatingto the photo stream menu 220. The application of some embodimentsprovides one or more different types of notifications to alert aparticipant that a new comment has been posted. In some embodiments, theowner is always notified of any new comments that have been posted. Asubscriber may be notified when the subscriber has participated in theconversation. That is, the subscriber has left a comment regarding animage and another comment was left regarding that same image by anotherparticipant. In some embodiment, if a participant (e.g., subscriber,owner) shared an image, that participant is always notified of any newcomments that have been posted regarding the same image.

FIG. 31 provides an illustrative example of how the image applicationnotifies an owner of a new comment and presents the new comment on theowner's device. Five operational stages 3105-3125 of the owner's deviceare illustrated in this figure. In the first stage 3105, the owner'sdevice displays the desktop of its operating system. The desktopincludes the icon 435 for opening the image application. As the deviceis associated with the owner, the image application displays a banner3130 indicating that a new comment has been left for an image.Specifically, the banner 3130 is superimposed along the top edge of theoperating system's desktop. In some embodiments, the banner 3130 rotatesinto view by simulating a 3D effect. The banner 3130 may float on top ofthe main display area for a predetermined period of time and thendisappear (e.g., rotate out of view, fade away).

As shown in the first stage 3105, the banner 3130 includes the commentand the name of the subscriber that left the comment. The banner 3130also includes a thumbnail representation 3135 of the image associatedwith the comment. In some embodiments, the banner 3130 is a selectableitem that when selected opens the image application. The imageapplication may also open to display a full screen representation of theimage with the comment.

In conjunction with the banner or instead of it, the image applicationmay provide a different type of marking. One such type of marking is abadge that is displayed at least partially over the icon of the imageapplication. This is shown in the first stage 3105 as the icon 435 isdisplayed with a badge 830 that is marked with a number “1”. In thisexample, the number represents the number of photo streams that have oneor more updates, and does not represent the number of new comments.However, the application of some embodiments may display such a markingto identify the number of new comments that have been received for aphoto stream.

In the first stage 3105, the owner selects the icon 435 to open theimage application. The second stage 3110 illustrates the application'sphoto stream menu 220 after the application is opened. The owner mighthave previously selected the photo stream tab 3035 to display this menu220. The name of the photo stream 3140 is listed with a marking 3040.The marking 3040 provides a visual indication to the subscriber thatthere is one or more updates to the photo stream 3140.

In the second stage 3110, the owner selects the photo stream 3140 fromthe menu 220. The selection causes the application to display the imagedisplay area 105, as illustrated in the third stage 3115. The imagedisplay area 105 includes thumbnail representations of images in thephoto stream. As mentioned above, the application of some embodimentsprovides a visual indication that an image is associated with one ormore comments. This is shown in the third stage 3115 because the secondthumbnail image 3050 is displayed on the image display area with amarking 3150.

In the example illustrated in the third stage 3115, the marking 3150 isa double chat bubble or speech bubble icon. Different from a single chatbubble, the double chat bubble indicates that the owner has participatedin the conversation. That is, the owner has previously left a commentregarding the image and a new comment has been received. The double chatbubble is displayed at least partially over the thumbnail image 3050.The double chat bubble is also colored (e.g., blue). The color providesa visual indication to the owner that there is an unread commentassociated with the corresponding image. In some embodiments, theapplication does not differentiate whether a person participated in aconversation. For example, the application may display a same marking(e.g., the single chat bubble and not the double chat bubble) regardlessof whether the person participated in the conversation.

As shown in the third stage 3115, the owner selects the thumbnail image3050. The selection causes the image display area 105 to display a fullscreen representation 3060 of the corresponding image as illustrated inthe fourth stage 3120. As shown, the new comment is displayed over theimage 3060. The new comment is also associated with metadata thatidentifies the person who left the comment and the time when the commentwas left. The comments are sequentially displayed in the image displayarea 105. Specifically, the new comment is shown below the previouscomment. The add comment field 365 is displayed below the previouscomment.

The fifth stage 3125 illustrates the image display area 105 afternavigating out of the full screen view (e.g., by selecting a backbutton). The thumbnail view is identical to the one shown in the thirdstage 3115. However, the double chat bubbles 3150 have been modified toindicate that there are no unread comments. Specifically, the color ofthe double chat bubble 3150 has been modified from one color (e.g.,blue) to another color (e.g., white). One of ordinary skill in the artwould understand that modifying the color is just one of many differentways in which the application can provide such visual indication. Forinstance, the double chat bubble 3150 can be removed from the thumbnailimage 3050 to provide the same indication (e.g., no unread comments).

In the example described above, the different marking are displayed overimages with comments. In some embodiments, the application follows a setof rules to display the different markings. For example, a first marking(e.g., a comment or chat bubble) that is colored a first color (e.g.,blue) indicates that the image is associated with an unread comment andthe participant has not left a comment for the same image. A firstmarking (e.g., a comment bubble) that is colored a second differentcolor (e.g., white) indicates that all comments have been read and theparticipant did not leave any comments for the same image.

A second different marking (e.g., a double comment or chat bubble) thatis colored the first color (e.g., blue) indicates the image associatedwith an unread comment and the participant has previously left a commentfor that image. The second different marking (a double comment bubble)that is colored the second different color (e.g., white) indicates thatall comments have been read and the participant previously left acomment for that same image.

B. Marking Images

In the examples described above, the owner and the subscriber exchangecomments regarding an image. The image application of some embodimentsallows a participant to mark an image. In some such embodiments, themarking provides a visual indication that the participant approves orlikes the image. FIG. 32 provides an illustrative example of marking animage. Three operational stages 3205-3215 of the user's device areillustrated in this figure.

The first stage 3205 illustrates the image application displaying a fullscreen representation of an image 3220. The image 3220 is associatedwith several comments and a mark 3225. The mark 3225 includes an imageor symbol. Here, the mark 3225 is a smiley face or happy face thatprovides an indication that one or more individuals listed adjacent toit approves or likes the displayed image 3220. However, any number ofdifferent symbols (e.g., heart symbol) and/or images (e.g., flags,icons) can be used to provide the same indication. In the exampleillustrated in the first stage 3205, the name of a subscriber isdisplayed next to the smiley face symbol 3225.

The second stage 3210 illustrates the owner selecting the marking 3225to indicate that he or she likes the marking. Specifically, the userselects the marking 3225 from the image display area 105. The thirdstage 3215 illustrates the image display area 105 after the selection ofthe symbol 3225. As shown, the selection results in the owner beingadded to the list of individuals adjacent to the symbol 3225.Specifically, the owner's identification has been added next to thesubscriber's name. In this example, the owner is identified as “Me”.

In some embodiments, the application counts the association of theapproval mark as one comment. That is, the number of likes is countedtowards the number of comments. This is shown in the second and thirdstage 3210 and 3210 because the number of comments in the comment bubble3235 is incremented by one (i.e., changes from three comments to fourcomments). The application of some embodiments allows a participant toremove the approval mark. For instance, the owner can reselect themarking 3225 to unlike the displayed image.

C. Displaying Comments

The previous two examples illustrated adding comments or markings toimages. Several examples of displaying and scrolling comments will bedescribed by reference to FIGS. 33-35. FIG. 33 provides an illustrativeexample of how the image application of some embodiments displays animage with comments. Four operational stages 3305-3320 of the owner'sdevice are illustrated in this figure.

The first stage 3305 illustrates the image application displaying a fullscreen representation of an image 3325 with comments. The full screenrepresentation is overlaid by the top bar 210 and the bottom bar 370.The top bar 210 includes the back button 330 and a heading. The headingindicates that the displayed image is the second of two images.Different from the top bar 210, the bottom bar 370 includes (1) a sharebutton 345 for sharing the displayed image, (2) a play button 350 forplaying a slide show of the images in the photo stream, (3) a deletebutton 1740 for deleting the displayed image, and (4) a comment button360 for leaving a comment regarding the displayed image. The bottom barmay also include a stream button (not shown) for streaming the images inthe photo stream to one or more other devices (e.g., a desktop computer,a laptop).

In the first stage 3305, the owner selects the full screenrepresentation of the second image in the photo stream. As illustratedin the second stage 3310, the selection causes the top and bottom barsto disappear (e.g., fade away). However, the comments remain overlaid onthe full screen representation. In addition, the icon 3335 of thecomments button 360 (e.g., the comment bubble) is displayed in the samelocation over the full screen representation. As shown in the secondstage 3310, the owner then selects a location 3340 on the full screenrepresentation 3325 to zoom in on the image.

The third stage 3315 illustrates the image display area 105 after theselection of the location 3340 on the full screen representation. Theselection results in the application zooming in on the displayed imagetowards the selected location. As shown, the icon 3335 of the commentbutton 360 (e.g., the comment bubble) remains in the same location withrespect to the device's screen. However, the comments are not displayedin this zoomed view. To display the comments, the owner selects the icon3335.

The fourth stage 3320 illustrates the image display area 105 after theselection of the icon 3335. The selection results in the applicationdisplaying the comments in the zoomed view. Alternative, the selectionmay result in the application displaying the full screen representationwith the comment. For instance, the selection may cause the applicationto zoom out of the displayed image. The selection may also cause thecomments to reappear over the full screen representation 3325.Accordingly, upon selection of the icon 3335, the application of someembodiments displays the full screen view that is illustrated in thesecond stage 3310.

The previous example illustrated zooming in on an image with comments.In some embodiments, the comment toggle is persistent across otherimages. For example, when the comment mode has been activated, theapplication allows its user to scroll through images with comments. FIG.34 provides an illustrative example of scrolling through differentimages with comments. Three operational stages 3405-3415 of the owner'sdevice are illustrated in this figure.

The first stage 3405 illustrates the image application displaying thefull screen representation 3420 of the image associated with severalcomments. The comments and the comment icon 3335 appear over the fullscreen representation 3420. The comment icon 3335 has been activated(e.g., changed from a first color to a second different color) toindicate that comments are being displayed. The top and bottom bars arenot shown in this full screen view.

In the second stage 3410, the user selects (e.g., swipes across) thescreen to display the next image. This causes the application to displaythe next image 3425. As shown in the third stage 3415, the next image3425 is also displayed with its associated comment. When the next imageis not associated with any comments, the application of some embodimentsonly displays the add comment field 365 and the icon 3335 (e.g., withthe plus sign instead of a number).

The previous example illustrated scrolling through different images withcomments. FIG. 35 provides an illustrative example of scrolling throughthe comments associated with one image. Three operational stages3505-3515 of the owner's device are illustrated in this figure. Thefirst stage 3505 illustrates the image application displaying the fullscreen representation of the image with the comment. Specifically, thereare six comments associated with the displayed image and five of thoseare shown in the image display area. The comments are also in a sortedorder, starting with the oldest comment at or near the top and thenewest one at the bottom. In some embodiments, the application displaysthe comments in opposite order, starting with the newest comment at thetop and the oldest one at the bottom. The application of someembodiments presents the comment with shading. For example, theapplication may display the top of the comment list being white down tothe bottom becoming grayer and grayer.

As shown in the first stage 3505, there is limited amount of space todisplay different comments. Here, the image display area displays fourcomments and the add a comment field 365. In the second stage 3510, theuser then scroll through the comments associated with the image by usinga touch gesture (e.g., moving or dragging the user's finger up or downthe device's screen). The gesture causes the application to display oneolder comment while removing the add comment field 365. In the thirdstage 3510, the user inputs the same gesture to display another comment.As shown, the input causes another comment comes into view while a newercomment scrolls out of the view. The input also causes a marking tool(e.g., the smiley face, the like icon) also comes into view.

D. Example Processes

Several example processes for exchanging comments will now be describedby reference to FIGS. 36 and 37. FIG. 36 conceptually illustrates aprocess 3600 that some embodiments use to post a new comment. Theprocess 3600, in some embodiments, is performed by the imageapplication. The process 3600 begins when it receives (at 3605) a userinput to post a new comment for an image in a shared photo stream. Asmentioned above, the user might have first inputted a comment into acomment field and then selected a post button.

After receiving the input, the process 3600 generates (at 3610) amessage regarding the new comment. The message may include the newcomment. The message may also include one or more identifyinginformation, such as (1) a user identification (“ID”) that identifies aparticipant that left the new comment, (2) a photo stream ID thatidentifies the photos stream, (3) an image ID that identifies the imagewith the new comment, (4) comment ID that identifies the new comment,and (5) a timestamp that identifies the time and date the new commentwas left.

The process 3600 then sends (at 3615) the message to a control server.In some embodiments, the control server receives the message and storesthe comment. Based on the message, the control server may also identifyentities (e.g., owner, subscribers) associated with the photo stream.The control server may then send a message regarding an update to aphoto stream to each device associated with the identified entities.

FIG. 37 conceptually illustrates a process 3700 that some embodimentsuse to display the new comment. The process, in some embodiments, isperformed by the image application. The process begins when it receives(at 3705), from a control server, a message regarding an update to theshared photo stream. After receiving the notification, the process 3700retrieves (at 3710) a list of photo streams from the control server.Based on the list, the process 3700 retrieves (at 3715) the new commentfrom the control server.

At 3720, the process 3700 notifies a participant (e.g., the device'suser) of the new comment. As mentioned above, the application of someembodiments always notifies the owner when a new comment has been postedregarding an image in the shared photo stream. A subscriber may benotified when the subscriber has participated in the conversation. Thatis, the subscriber has left a comment regarding an image and anothercomment was left regarding that same image by another participant. Insome embodiment, if a participant (e.g., subscriber, owner) shared animage, that participant is always notified of any new comments that havebeen posted regarding the same image.

In notifying the participant, the process 3700 may display one or moremarking and/or cause the participant's device to play a sound orvibrate. For instance, a visual indication of the association of thecomment may be shown with a banner and a badge over an icon. The visualindication may be presented at a thumbnail view (e.g., with a chatbubble near or at least partially over the thumbnail representation)and/or at a full-screen view (e.g., with a similar chat bubble near orat least partially over the thumbnail representation).

As shown in FIG. 37, the process 3700 determines (at 3725) whether thereis an input to display the new comment. Many different examples of suchan input are described above. For instance, the participant might select(e.g., tap the participant's finger on) a banner notification.Alternatively, the participant might select a comment tool (e.g., thechat bubble icon) to display the new comment. If there is an input todisplay the new comment, the process 3700 displays (at 3730) the newcomment with the associated image. Otherwise, the process 3700 ends.

Some embodiments perform variations on the processes 3600 and 3700. Thespecific operations of each of these processes may not be performed inone continuous series of operations, and different specific operationsmay be performed in different embodiments. Furthermore, the processes3600 and 3700 could be implemented using several sub-processes, or aspart of a larger macro process.

V. Public Website

The image application of some embodiments allows a participant topublish the photo stream to a website. In some embodiments, the websiteis a public website that can be accessed by any browser with the correctuniform resource locator (URL) address. Several example of publishing aphoto stream to a website will now be described by reference to FIGS.38-48.

A. Publishing a Photo Stream to a Website

FIG. 38 provides an illustrative example of publishing a shared photostream to a website. Specifically, in three operational stages3805-3815, this figure illustrates how an owner can publish the photostream using the image application. This figure includes the edit photostream menu 2130 that has been described above by reference to FIG. 21.

The first stage 3805 illustrates the owner's device displaying the editmenu 2130. To display the edit menu 2130, the owner might have firstselected a selectable item (e.g., a colored icon with a directionalarrow) that is displayed with the name of the photo stream in the photostream menu. As shown, the edit menu 2130 includes the public websitecontrol 2145. The owner can select the control 2145 to turn on or offthe public website feature. In the example illustrated in the firststage 3805, the public website feature is turned off or disabled. Topublish the photo stream, the owner selects (e.g., by performing agesture such as tapping the owner's finger on) the control 2145.

The second stage 3810 illustrates the image application after theselection of the control 2145. The selection causes the application tosend data to one or more servers to publish the photo stream to thewebsite. For example, the application may generate one or more lowerresolution images from a stored image (e.g., raw image) and send thoseimages to a server. The application may exchange messages with a controlserver regarding publication. In the example illustrated in the secondstage 3810, the edit menu 2130 is overlaid by a spinner or spinningwheel 2325 (e.g., below the control in the edit menu). The spinner 2325provides a visual indication that the application is awaitingconfirmation of the publication.

The third stage 3815 illustrates the image application after thepublication of the images associated with the photo stream. Thepublication of the photo stream results in the display of a share linkcontrol 3820. In this example, the share link control 3820 is displayedbelow the public website control 2145. The share link control 3820 canbe selected to generate a message (e.g., an email) that contains a linkto the URL to access the website. In some embodiments, the message canbe sent to anyone, including those that are not subscribed to the photostream. The selection of the share link button may cause the applicationto display different options (e.g., buttons with icons). Each of theseoptions may allow the user to share the link differently, e.g., throughan email message, text message, social network post, social networkmessage, etc. As shown, the URL is also displayed on the edit menu 2130.Here, the edit menu 2130 is overlaid by a message 3825 stating that thephoto stream can also be viewed at the URL (e.g., http) address.

FIG. 39A provides an illustrative example accessing the webpage with thesubscriber's device. Three operational stages 3905-3915 of thesubscriber's device are illustrated in this figure. The first stage 3905illustrates the selection of an icon 925 of the email application. Inthe second stage 3910, the email application displays the email sentfrom the owner's device. The email includes a message 935, a link 940,and a thumbnail image 930. The message 935 states that the owner shareda photo stream with the recipient. The thumbnail image 930 shows theicon of the image application. The icon is shown with a marking or badge945 indicating that there is a new photo stream or an update to anexisting photo stream. The link 940 is a selectable item for the webpagethat contains the images from the photo stream.

As shown in the second stage 3910, the subscriber selects the link 940.The selection causes a web browser to be opened, as illustrated in thethird stage 3915. The browser 3930 displays the webpage that includesthe images from the photo stream. The webpage is overlaid by a top bar3920. The top bar 3920 states the title of the photo stream and the nameof the owner. In addition to the top bar, the group of images includesits own heading 3925. Specifically, the heading 3925 includes (1) thedate and time the group of images was added to the photo stream, and (2)the number of photos in the group.

In the example illustrated in the third stage 3915, the images aredisplayed in a grid format. Specifically, the images are displayed in atwo by two grid with two images on each grid row. The images aredisplayed side by side with minimal or no spacing between them in eitherthe horizontal or vertical direction. In some embodiments, the imagelayout is selected based on the number of images in a batch and theorientation of the images in the batch. Several examples of selecting alayout for the images will be described by reference to FIGS. 42-47.

FIG. 39B provides an example of an alternate email message that isreceived at the subscriber's device. This figure is identical to stagetwo 3910 of the previous figure. However, the link to the public websiteis a secondary link 3935. The primary link 3940 being a link to join thephoto stream, which is similar to the one described above by referenceto FIG. 9.

The previous example illustrated publishing images in the photo streamto a website. In some embodiments, the webpage containing the publishedimages is updated each time a participant adds additional images to ashared photo stream. FIG. 40 provides an illustrative example of how thewebpage is updated when a new image is added to the photo stream. Threeoperational stages 4005-4015 of the subscriber's device are illustratedin this figure.

In the first stage 4005, the browser 3930 displays the webpage thatincludes the images from the photo stream. In this example, the webpagedisplays the batches in reverse chorological order, starting with thenewest batch at the top and the previous batch below. The images in eachbatch are displayed in chronological order, starting from the oldest tothe newest. Specifically, the images are sequentially displayed startingwith top left image 4020 of the first row, which represents the oldestimage, to the bottom right image 4025 of the second row, whichrepresents the newest image.

As shown in the second stage 4010, the user uses a touch gesture toscroll down the webpage to display a second batch of images. The thirdstage 4015 illustrates the webpage displaying a second batch of imagesthat were added at a different time than the first batch. Here, thebatch includes only one image. The heading 4020 indicates that the olderbatch contains one image and the time when the image was added, which isbefore the first batch of images.

FIG. 41 provides an example of scrolling through images in the photostream. In the first stage 4105, the subscriber selects an image 4140from the webpage. As shown in the second stage 4110, the selectioncauses the web browser to display a full-screen representation 4125 ofthe selected image. The full-screen representation may be displayed withone or more comments. In some embodiments, the full-screenrepresentation 4125 is displayed only with the first associated comment4120. As shown, the comment 4120 appears as a caption that is displayedover the lower portion of the full-screen representation 4125.

In the example illustrated in the second stage 4110, the full-screenrepresentation 4125 is displayed with a back button 4135 for returningto the previous view (i.e., the view illustrated in the first stage4105) and a slide show button 4130 for playing a slide show of thepublished images. In some embodiments, the full-screen representation4125 is displayed with navigation buttons (not shown) that can be usedto display a next or previous image.

In the second stage 4110, the subscriber selects (e.g., swipes acrossthe device's screen to display a previous image. The third stage 4115illustrates the web browser 3930 after the selection. As shown, thebrowser displays a previous image 4145 in the photo stream. In thisexample, the displayed image 4145 is the last image (e.g., the newestimage) in another batch (e.g., the newest batch). In some embodiments,the selection to display a previous image may result in the browserdisplaying a full-screen representation of the first image (e.g., theoldest image) in the batch.

B. Webpage Layouts

In some embodiments, a web publishing server publishes images in a photostream as one or more webpages to a website. The web publishing serverof some embodiments selects a webpage layout based on the number ofimages in different batches and the orientation of those images. Thewebpage layout may display images in a particular order (e.g., startingwith the oldest image and ending with the newest image, or vice versa).The webpage layout may display different batches in a particular order(e.g., starting with the oldest batch to the newest batch, or viceversa). Several example webpage layouts will now be described byreference to FIGS. 42-45. In these examples, the boxes representhorizontal or landscape images. Each box is numbered, and the numberrepresents the sequence of images, starting from the oldest image to thenewest image.

FIG. 42 provides an illustrative example of webpage layouts for a batchthat includes two images. Four different example layouts 4205-4220 areshown in this figure. The layout 4205 represents a layout for a batchthat contains two portrait images, while layout 4210 represents one withtwo landscape images. When the batch includes a portrait image and alandscape image, the portrait image may occupy one square grid cell,while the width of the landscape image is matched with the width of thesquare grid cell. The layout 4215 represents a layout where the firstimage is a portrait image while the second image is a landscape image.Conversely, the layout 4220 represents a layout where the first image isa landscape image while the second image is a portrait image.

FIG. 43 provides an illustrative example of a webpage layout for a batchthat includes three or four images. Specifically, the layout 4305represents a batch with three images, where the first image is aportrait image, while the layout 4310 represents one where the firstimage is a landscape image. In these two layouts 4305 and 4310, theremaining two images in batch are displayed as square images.Irrespective of the orientation of the images, the layout 4315 showsthat all images are displayed as square images when there are fourimages in a batch.

FIG. 44 provides an illustrative example of a webpage layout for a batchthat includes five images. In particular, the layout 4405 is for afive-image batch shows that the first four images are arranged in atwo-by-two block and the fifth image is placed below the block. Thefifth image is also four times the size of each of the first fourimages. In contrast, the five-image layout 4410 (e.g., the landscapelayout) shows that first four images are arranged in a two-by-two blockand the fifth image (i.e., the largest one) is placed thereafter (e.g.,to the right). In some embodiments, the landscape layout used to displayimages on certain platforms (e.g., smart TV, digital media receivers).For example, an image application that operates on a digital mediareceiver may select this layout to display images in a batch.

FIG. 45 illustrates webpage layouts for a batch that includes more thansix images. Specifically, the seven-image layout 4505 is the same as thesix-image layouts, except a seventh image is arranged below the firstsix images. There are also three different layouts 4510-4520 for photostreams containing eight images. Specifically, the layout 4510 is for abatch where the seventh and eighth images are a mix of landscape andportrait images, the layout 4515 is for a batch where the seventh andeighth images are landscape images, and the layout 4520 is for a batchwhere the seventh and eighth images are portrait images. This figurealso illustrates examples of nine-image layouts 4525-4535, a ten-imagelayout 4540, an eleven-image layout 4545, and a twelve-image layout4550. Several of these layouts 4525-4550 follow a pattern by adding oneor more of the layouts described above. Similar to the twelve-imagelayout 4550, a layout may be added to another layout by inverting orflipping the order in relation to the different image sizes. This figureillustrates example portrait layouts. However, the groups of images canbe arranged side-by-side for different landscape layouts for certainplatforms (e.g., smart TV, digital media receivers).

C. Image Framing

In many of the examples described above, the images are displayed insquare cells or blocks, regardless of whether they are landscape orportrait images. To account for the mismatch in the aspect ratio, theweb publishing system of some embodiments performs a framing operationthat fits the image's smaller dimension (i.e., width or height) on asquare cell and displays the portion of the image that is within thegrid cell. The framing operation may also entail centering or topaligning the image on the grid cell.

FIG. 46 provides several examples of how images are framed in a webpagelayout. The figure includes two square cells 4605 and 4610. Thelandscape image 4615 is placed on the cell 4605. As shown, the height ofthe landscape image 4615 is matched with the height of the cell 4605.The landscape image 4615 is then centered on the grid cell 4605. Theportion of the landscape image 4615 within the square cell 4605 is thedisplayed portion of the landscape image.

The portrait image 4620 is placed on the cell 4610. As shown, the widthof the portrait image 4620 is matched with the width of the cell 4610.Different from the landscape image 4615, the portrait image 4620 is notcentered on the grid cell 4610. Instead, the portrait image 4620 is topaligned on the cell.

In conjunction with the framing operation, or instead of it, an imagemay be cropped or different portions (e.g., the outer parts) of theimage may be removed from the layout. FIG. 47 provides an illustrativeexample of how portrait and landscape images 4705 are presented in abatch layout (e.g., two-image layout, three-image layout, etc.). Asshown, the layout crops the top portion of the landscape image 4705after shifting the image up a particular amount (e.g., 10% of theimage). That is, the top portion of the image and the lower portion ofthe image are not shown in the batch layout. In this example, the lowerportion of the image is cutoff more than the top portion. Different fromthe landscape image, the center portion of the portrait image 4710 iscropped. Specifically, the portrait image 4710 is cropped such that theleft and right outer portions are not shown in the batch layout.

D. Example Process for Publishing a Photo Stream to a Website

Having described several example batch layouts, an example process forpublishing a photo stream will now be described. FIG. 48 conceptuallyillustrates a process 4800 that some embodiments use to publish imagesin a photo stream to a website. The process 4800, in some embodiments,is performed at the server-side by a server computer (e.g., by the webpublishing server). Alternatively, a client device may generate the webpage and upload it to the web publishing server.

The process 4800 begins when it receives (at 4805) a request to publishimages. For instance, the process 4800 might receive a request to turnon the website from a client device. The process 4800 then identifies(at 4810) the number of images and the orientations of the images in abatch. Based on the identifications, the process 4800 specifies (at4815) a layout for the batch.

At 4820, the process 4800 determines whether there are any otherbatches. If so, the process 4800 returns to 4810, which is describedabove. Otherwise, the process 4800 generates (at 4825) a webpage basedeach specified layout. When the batch has been previously published, theprocess 4800 might use a previously selected layout to generate thewebpage. The process 4800 then publishes (at 4830) the webpage to awebsite (e.g., to a web servers).

Some embodiments perform variations on the process 4800. The specificoperations may not be performed in one continuous series of operations,and different specific operations may be performed in differentembodiments. For instance, the process 4800 might receive images from aclient device in order to publish those images. In some embodiments, theprocess 4800 returns a Uniform Resource Locator (“URL”) address foraccessing the webpage to the client device. Furthermore, the process4800 could be implemented using several sub-processes, or as part of alarger macro process.

In some embodiments, the batch layout operations described above may beperformed at a client device to display the images. For instance, animage application that operates on a digital media receiver, smart TV,or a personal computer may perform the batch layout operation togenerate a batch view of the images in the photo stream. Severalexamples presenting images on different clients are described below

VI. Tablet Example

In the examples described above, the image sharing tools are implementedas part of an image application. The image application executes on boththe owner and subscriber's device to facilitate image sharing andcommenting operations. In some embodiments, the image sharing tools areimplemented across different devices (e.g., smart phone, tablet, laptop,desktop, digital media receiver, etc.) and/or different operatingsystems (e.g., Windows®, iOS, MAC OS X, etc.). These implementationsallow the different platforms to inter-operate in order to share imagesand comments. An example implementation of the image sharing tools on atablet device will now be described by reference to FIGS. 49-51.

FIG. 49 provides an illustrative example of the image sharing tools on atablet. The image sharing tools are provided as part of the imageapplication described above. However, the tablet's user interface isdifferent from the smart phone's user interface because the tablet has alarger screen than the smart phone. Four operational stages 4905-4920 ofthe owner's tablet are illustrated in this figure. This figure includesan image display area 4925, a photo stream menu 4955, a photo streamoptions sheet 4960, and a comment sheet 4965. These user interface itemscorrespond to those items that are described above for the smart phoneby reference to FIGS. 1 and 2.

In the first stage 4905, the image application displays images from acollection (e.g., an image library). Specifically, the applicationdisplays thumbnail representations of the images. Each thumbnail imageis not displayed as a square image but is displayed in its correspondingaspect ratio (e.g., as a portrait image, a landscape image). Threeimages have been selected using the image display area 4925. To sharethe selected images, the user has also selected the share button 4930.The selection of the share button 4930 results in the display of apop-up menu 4935. Here, the pop-up menu 4935 appears below the sharebutton 4930 and overlays a portion of the upper-left hand corner of theimage display area 4925. The pop-up menu 4935 includes (1) a photostream button 4940 to create a new photo stream or add images to anexisting photo stream, (2) an email button 4945 to email the selectedimages, and (3) a print button 4950 to print the selected images.

To create a new photo stream, the user selects (e.g., by tapping theuser's finger on) the photo stream button 4940. The second stage 4910illustrates the owner's tablet after the selection of the photo streambutton 4940. The selection results in the display of the photo streamoptions sheet 4960. In the tablet version, the photo stream optionssheet 4960 covers only a portion of the image display area 4925. Here,the options sheet 4960 is presented similar to a fill-in card with afield 4970 to input one or more subscribers for the photo stream, afield 4975 to input a name of the photo stream. The option sheet alsoincludes a control 4980 to turn on or turn off the public websiteversion of the photo stream.

In the second stage 4910, the owner has specified a subscriber and aname for the photo stream. The third stage 4915 illustrates the imageapplication after the owner has selected a next button 4985. Theselection caused the application to display the comment sheet 4965.Similar to the options sheet 4960, the comment sheet 4965 is presentedsimilar to a fill-in card and covers only a center portion of the image.In some embodiments, the image application displays an animation whenswitching or transitioning from one display area to another displayarea. For example, the application may display the photo stream optionssheet 4960 being flipped over to the comment sheet 4965, similar to atwo-sided card being flipped over.

The comment sheet includes a comment filed 4966 and a post button 4968.The user can use the comment field 4966 to input a comment regarding animage (e.g., the first image) in the photo stream. The post button 4968can be selected to publish the photo stream. Here, the user does notinput any comment into the comment field 4966 and selects the postbutton 4968.

The fourth stage 4920 illustrates the photo stream menu 4955 after theselection of the post button 4968. As shown, the new photo stream 4956is listed with its name. In addition, the new photo stream 4956 includespreviews of one or more images in the photo stream. Here, the thumbnailrepresentations of images in the photo stream are sequentially stackedon top of each other starting with the first image on top and the thirdimage at the bottom. One of ordinary skill in the art would understandthat the image preview could be presented differently. For example, thethumbnail images can be presented in a grid format instead of beingstacked on top of each other.

FIG. 50 illustrates another example of the image sharing tools on atablet. This figure is identical to the previous figure; however, thepop-up menu 4935 includes a grid of icons, instead of the text-basedbuttons. A similar grid of icons has been described above by referenceto FIG. 1.

The previous example illustrated creating a new photo stream using atablet. FIG. 51 provides an illustrative example of how comments arepresented on the tablet. Three operational stages 5105-5115 of theowner's tablet are illustrated in this figure.

The first stage 5105 illustrates the image application displayingthumbnail representations of images in the photo stream. The thumbnailimages 5120-5125 are also marked with markings. These markings indicatethat there are comments associated with the corresponding images. In theexample illustrated in the first stage 5105, the thumbnail image 5120 ismarked with a single chat bubble and the thumbnail image 5125 is markedwith a double chat bubble. The single chat bubble indicates that theowner has not participated in the conversation (e.g., left a commentregarding the image). The double chat bubble indicates that the ownerhas previously left a comment regarding the corresponding image. Thecolor of these markings (e.g., blue markings) indicates that there arenew or unread comments.

In the first stage 5105, the owner selects (e.g., by tapping the owner'sfinger on) the thumbnail representation 5125 of the image. The selectioncauses the image application to generate a display of a full screenrepresentation 5130 of the image. The image display area 4925 isoverlaid by a semi-transparent bottom bar 5135. The thumbnailrepresentations of images in the photo stream are sequentially displayedalong the bottom bar 5135. The owner can select any one of these imagesto display the corresponding full screen representation in the imagedisplay area 4925.

As shown in the second stage 5110, the selection of the thumbnail image5125 results in the display of a comment bubble 5140. The comment bubble5140 includes a number (e.g., “2”) that represents the number ofcomments associated with the image. The comment bubble 5140 is alsocolored (e.g., colored white) to indicate that the comment mode has notbeen activated.

In the second stage 5110, the owner selects the comment bubble 5140 toactivate the comment mode. Selection of the comment bubble 5140 causesit to change colors (e.g., turn blue), which in turn provides the ownerwith a visual indication that the comment mode has been activated. Theselection of the comment bubble also results in the display of thecomments 5150 associated with the image.

As shown in the third stage 5115, the comments 5150 are displayedsequentially with the oldest one on top and the newest one at thebottom. The comments 5150 are also associated with metadata. Themetadata is displayed below each comment, and identifies the person wholeft the comment and the time when the comment was left. The comments5150 are also displayed with an add comment field 5155 that can beselected to add additional comments. In some embodiments, theapplication displays a marking (e.g., a like button, smiley face icon)that can be selected to specify that the participant likes the displayedimage. Several examples of such a marking have been described above byreference to FIG. 32.

VII. Digital Media Receiver

In some embodiments, the image sharing tools are provided as part of animage application that executes on a digital media receiver (e.g.,high-definition (“HD”) media streaming device) or smart television(“TV”). Several examples of such an image application that executes on adigital media receiver will now be described by reference to FIGS.52-55. In these examples, the digital media receiver is controlled by aremote control. The remote control may include a set of navigationbuttons (e.g., up, down, left, right buttons) and a selection button.The remote control may also include other controls such as a menu buttonto return to a preview view (e.g., previous menu).

FIG. 52 provides an illustrative example of opening a shared photostream with a digital media receiver. Specifically, this figureillustrates in three operational stages 5205-5215 how the imageapplication presents the photo stream on a wide screen television(“TV”). As shown, the figure includes an operating system desktop 5220(hereinafter a grid view), a photo stream menu 5225 (hereinafter analbum list), and an image display area 5230 (hereinafter a batch view).

The grid view 5220 displays different application icons in a girdformation. The user can select any one of the icons to open acorresponding application. To simplify the discussion, the grid view5220 includes only two icons, namely a photo stream icon for opening theimage application and a TV show icon for opening a TV show streamingapplication. However, the grid view 5220 can include other icons forother applications (e.g., movie streaming application, music streamingapplication, etc.). The grid view may also include a settings icon foropening a settings menu.

Similar to the photo stream menu 220 described above, the album list5225 displays a list of photo streams. Here, each photo stream is listedwith its name, a thumbnail representation of an image (e.g., a firstimage) in the photo stream, and a number that identifies the number ofimages in the photo stream). The photo stream menu includes a previewdisplay area 5235 that displays one or more images from a photo streamselected from the list.

In the example illustrated in FIG. 52, the photo stream list 5225 isorganized into four different sections. Here, the top section lists apersonal photo stream that represents a group of images shared onlyacross the user's devices. The remaining sections include (1) a sharedalbums section (e.g., “my shared albums”) listing the name of each photostream shared by the user, (2) an invitation section listing the name ofeach pending invitation for a photo stream from another user, and (3) ashared by others section listing the name of each photo stream shared byanother user. One of ordinary skill in the art would understand thatthis is just one example organization scheme and that the applicationmay organize the different types of photo streams differently indifferent embodiments. For example, the four sections can be organizedinto two sections with the personal photo stream in one section and theremaining photo streams in another section.

In some embodiments, the image application lists different shared photostreams in chronological or reverse chronological order by publicationdates of the shared photo streams (e.g., the time and date the sharedphoto stream was created). Alternatively, the image application of someembodiments uses a different ordering to list the photo streams. Forinstance, the application may group all shared photo stream invitationsat top or upper section of the photos stream menu list and sort themalphabetically. The application may also alphabetically sort allremaining photo streams and group them underneath the invitations. Thealphabetical sorting is useful in that it allows the application's userto quickly find a shared photo stream when there are several differentshared photo streams. For example, when there are many shared photostreams that were published at different dates, this sorting allows theuser quickly search for a particular shared photo stream by its name. Insome embodiments, the application provides user interface items tochange the sorting of the shared photo streams and/or search for aparticular photo stream.

Returning to FIG. 52, the batch view 5230 displays one or more images ina selected photo stream. When the photo stream includes sets of imagesthat were added at different time, the batch view 5230 presents theimages in different groups or batches. Each group of images may besequentially ordered (e.g., in chronological order starting with theoldest image on the top left corner to the newest image on the bottomright corner). In addition, all groups may be sequentially ordered(e.g., in reverse chronological order starting with the newest group andending with the oldest group).

As shown, the batch view 5230 is overlaid by a top bar 5240 thatincludes a new comments button 5250, a slide show button 5255, asettings button 5260, and an unsubscribe button 5265. The new commentsbutton 5250 can be selected to display only images with new comments. Anexample of displaying only images with new comments will be describedbelow by reference to FIG. 54. The slide show button 5255 can beselected to play a slide show of the images in the photo stream. Theslide show may start with a first selected (e.g., highlighted) image inthe batch view 5230. In some embodiments, one or more music clips may beselected or streamed to accompany the slide show presentation.

The settings tool 5260 can be selected to modify different photo streamsetting. In some embodiments, the settings are contextual so they relatedirectly to the displayed photo stream. For example, the settings for apersonal photo stream may differ from the settings for a photo streamshared with others. The unsubscribe button 5265 can be used tounsubscribe from a photo stream. In some embodiments, the button 5265may only appear in the top bar 5240 when a subscribed photo stream isselected from the album list 5225. The selection of this button 5265 mayalso display a prompt requiring confirmation of the unsubscribeoperation. One reason for the displaying the prompt is that the imagesin the subscribed photo stream may be deleted from all devicesassociated with the subscriber.

Having described several user interface elements, the operations ofopening a photo stream will be described by reference to three stages5205-5215 that are illustrated in FIG. 52. The first stage 5205illustrates the grid view 5220 of the device's operating system. Thegrid view 5220 includes the photo stream icon and the TV show icon. Insome embodiments, the icon for the image application displays a markingwhen one or more photo streams have been updated. In the exampleillustrated in the first stage 5205, the marking is badge 5270 that isdisplayed partially over the photo stream icon. The badge 5270 includesa number “2” that indicates the number of new invitations and/or thenumber of photo streams that have been updated. The badge 5270 isremoved from the icon when the image application is opened (e.g., to thealbum list 5225).

In the first stage 5205, the photo stream icon is selected (e.g., withthe device's remote). The user then selects the application (e.g., byselecting the select or enter button on the remote). The second stage5210 illustrates the image application after the selection of the photostream icon. The selection results in the display of the album list5225. The album list 5225 lists different photo streams. Specifically,it lists the user's personal photo stream, a “Vacation” photo streamthat is shared by the user, and a “Family Photos” photo stream that isshared by another user. The list 5225 also includes an invitation to a“Kids” photo stream. The user can select the “Kids” photo stream toaccept or decline the invitation. The “Kids” photo stream is moved tothe “Shared by Others” section when the invitation is accepted, and itis removed from the album list 5225 when the invitation is declined.

Similar to the marked icon, several of the photo streams listed in thealbum list 5225 are marked with a marking 5275. This inner markingrepresents a second level of marking, the first level being at the iconlevel. As shown, the “Kids” photo stream is marked because it is a newphoto stream invitation, and the “Family Photos” photo stream is markedbecause it has been updated (e.g., includes new images and/or comments).Here, the marking 5275 is a colored circle or dot (e.g., blue circle).In some embodiments, the number of circles corresponds to the numbershown on the photo stream icon's badge 5270. A marking may be removedfrom the list once the corresponding photo stream has been opened.

As shown in the second stage 5210, the album list 5225 has beennavigated (e.g., by selecting the down button on the remote) to the“Family Photos” photo stream. The user then selects the “Family Photos”photo stream (e.g., by selecting the select or enter button on theremote). The selection results in the display of the batch view 5230, asillustrated in the third stage 5215.

The third stage 5215 illustrates the application displaying the batchview 5230. The batch view 5230 is overlaid by the top bar 5240 with thenew comments button 5250, the slide show button 5255, the settingsbutton 5260, and the unsubscribe button 5265. The top bar 5240 alsoincludes the name of the photo stream, the name of the owner of thephoto stream, and a number (e.g., in parentheses) that identifies thenumber of images in the photo stream.

As shown in the third stage 5215, two groups of images are displayed inthe batch view 5230. The first group includes six images and the secondgroup includes four images. The owner of the photo stream has addedthese groups of images to the photo stream at different times. Eachgroup includes a bottom field (5280 or 5285) that states the date andtime the corresponding group of images were added, and the number ofimages in the group. In some embodiments, the application uses relativedating to display the date and time information. For example, if thedate is within the week, the application may display “Today”,“Yesterday”, “Monday”, “Tuesday”, etc. However, if the date is notwithin the week, the application may display the day and the month ofthe date. If the date is not within the year, the application maydisplay the year in some embodiments.

In the example illustrated in the third stage 5215, several of theimages are associated with comments. Specifically, three images areassociated with comments. This is indicated by a marking that isdisplayed over each of the three corresponding thumbnail representations5232-5234. Here, the marking is a comment bubble. The comment bubble iscolored a first color (e.g., white) for the thumbnail image 5232 and asecond different color (e.g., blue) for the thumbnail images 5233 and5234. The first color provides a visual indication to the user that thefirst image in the first group is associated with viewed comments, andthe first and second images in the second group is associated with oneor more unread comments. The number of images associated with newcomments is also indicated by the new comments button 5250 that includesa number (e.g., in parentheses).

The previous example illustrated opening a photo stream using thedigital media receiver. FIG. 53 provides an illustrative example ofnavigating images in the photo stream. Three operational stages5105-5115 of the image application are shown in this figure.

The first stage 5305 illustrates the image application displaying thebatch view 5230. The user has navigated to the first image 5320 (e.g.,by using the remote's directional buttons). The user then selects thefirst image 5320 (e.g., by selecting the remote's select or enterbutton). The selection causes the display of the full screenrepresentation 5325 of the selected image, as illustrated in the secondstage 5310. Here, the full screen representation is displayed with amarking 5330. The marking 5330 is a comment bubble with a number. Thisnumber corresponds to the number of comments associated with the image.

The user can navigate through the images in the photo stream in thisfull screen view. In some embodiments, the full-screen view displaysimages (e.g., across batches) in chronological order starting with theoldest image and ending with the newest images. The batches may also besorted in reverse chronological order, starting with the newest batchand ending with the oldest batch. Alliteratively, the batches may besorted in chronological order, starting with the earliest batch andending with the latest batch. In addition, the images may be ordered inreverse chronological order starting with the latest image and endingwith the earliest image.

In the second stage 5310, the user makes another selection (e.g., byselecting the select button or down button on the remote). The selectioncauses the application to display a carousel view 5335, as illustratedin the third stage 5315. The carousel view 5335 displays several imagesof the photo stream across a screen. The images are displayed atdifferent sizes that emulate a three-dimensional carousel of images.That is, the center image is the largest one while other images areprogressively smaller. At any time, the user can change the center imageby selecting a next or previous image (e.g., by selecting the nextbutton on the remote).

In some embodiments, the carousel view 5335 displays each image in agroup along the virtual carousel in chronological order (i.e., from thenewest to the oldest). Similar to the full screen view, the carouselview shows all images (e.g., across batches) in chronological order,starting with the oldest image on the left to the newest image on theright. The batches may also be sorted in reverse chronological order,starting with the newest batch and ending with the oldest batch. This isillustrated in the first stage 5305 as the first image 5320 in the batchview 5230 is not the first image along the virtual carousel or in thelist of images as it is the oldest image amongst the first group ofimages. Accordingly, five other images are in the list prior to thefirst image 5320. Only two of the five images are shown in the thirdstage 5315. Similarly, the list of images includes different groups ofimages in chronological order. This is also shown in the third stage5315 as the last image (e.g., the image with the earliest timestamp)from the second group (e.g., the earlier batch) is displayed adjacent tothe first image 5320 in the first group. In some embodiments, thebatches are sorted in chronological order, starting with the earliestbatch and ending with the latest batch. In addition, the images may beordered in reverse chronological order starting with the latest imageand ending with the earliest image.

As shown in the third stage 5315, the comment 5340 is displayed belowthe image 5320. The comment's metadata is also shown in the carouselview 5335. Specifically, the name of the person who left the comment andthe time when the person left the comment are displayed below thecomment 5340. A chat bubble 5360 with the number of comments is alsoshown above the comment 5340. In addition, an icon 5350 is displayednext to the chat bubble 5360. The user can select this icon 5350 toindicate that the user likes or approves of the image 5320. In someembodiments, the approval rating is counted similar to a comment in thatthe number of comments increases (e.g., in the chat bubble 5360).

In conjunction with the selectable icon, or instead of it, theapplication of some embodiments allows the user to add and/or deletecomments. The comment may be selected for different actions oroperations, such as replying to a comment, deleting the comment, etc.For example, a participant of the shared photo stream can navigate tothe comment with the remote's navigational buttons and then press theselect button. Upon selection of the comment, the application maydisplay a list of different operations that can be performed.

In some embodiments, the image application allows the user to view onlyimages that are associated with one or more new comments. FIG. 54provides an illustrative example of filtering a display to only displayimages with one or more new comments. Three operational stages 5405-5415of the application are shown in this figure.

The first stage 5405 illustrates the image application displaying thebatch view 5230. The user has navigated to the new comments button 5250(e.g., by using the remote's directional arrows). The new commentsbutton 5250 is labeled with a number two indicating that two images areassociated with unread comments. The user then selects the button 5250(e.g., by selecting the remote's select or enter button).

The second stage 5410 illustrates the image application's user interfaceafter the selection of the new comments button 5250. The selectioncauses the application to display the carousel view 5335. Different fromthe carousel view described above, the carousel view 5335 in this figureincludes only images 5420 and 5425 associated with unread comments.Here, the image 5420 is the center image. The one comment that isassociated with the image is displayed below the image 5420. To view thenext image with one or more unread comments, the user then navigates tothe next image 5425 (e.g., by selecting the remote's next button).

Third stage 5415 illustrates the carousel view 5335 after navigating tothe image 5425. As shown, the image 5425 is associated with fivecomments and one approval rating. The number of comments and/or approvalratings is indicated by the number that is shown on the comment bubble5430. In this example, only four single-lined comments are shown belowthe image 5425. The other remaining comment is not shown. Differentembodiments may display more or less lines of comments.

In some embodiments, the carousel view 5335 presents comments associatedwith an image by automatically scrolling through them. The applicationof some embodiments automatically scrolls through unread commentsstarting from the newest to the oldest unread comment and then stops.The comments can also be scrolled with the remote's navigationalbuttons, in some embodiments. For example, the user can scroll up thecomments by selecting the up (e.g., top) button and scroll down byselecting the down (e.g., bottom) button.

Several examples of the image application of some embodiments aredescribed above. FIG. 55 illustrates an example of another imageapplication for a digital media receiver or smart TV. The imageapplication is an alternate embodiment that implements the image sharingtools. Different from the examples described above, this applicationincludes three controls along a top bar 5540: a new comments button5525, a slide show button 5530, and a more button 5535. The new comments5525 button is the same as the one described above by reference to FIG.54.

In the example illustrated in FIG. 55, the selection of the slide showbutton 5530 causes the application to display several selectable itemsrelating to the slide show presentation. Specifically, the applicationprovides a selectable item (e.g., a play button) for starting a slideshow using the images in the shared photo stream. The selection of theslide show button 5530 also causes the application to display a set ofslide show configuration tools for configuring the slide showpresentation (e.g., to add a music track to the presentation, to specifyhow the images are presented, etc.). When the more button 5535 isselected, the application of some embodiments provides differentmanagement commands. For example, the application may provide aselectable item for unsubscribing from the displayed photo stream. Theapplication may also provide a selectable item for using the images inthe shared photo stream as a screen saver. Several other managementcommands are described above by reference to FIG. 21.

Three operational stages 5510, 5515, and 5520 of the image applicationare illustrated in FIG. 55. These stages are similar to the ones shownin FIG. 52. Specifically, the images are grouped into two differentbatches 5545 and 5550. In some embodiments, each batch is a publishingof a group of one or more images to a shared photo stream. The primarysort order is reverse chronological order by batch, and the secondarysort order is chronological by image. That is, the batch 5545 on theleft-hand side is the newest batch, and the batch 5550 on the right-handside is the older batch. The images (5501-5504 or 5505-5508) in eachbatch are sorted starting with the oldest image on the top left and thenewest image on the bottom right.

Different from several examples described above, the application of someembodiments linearizes the photo stream's images by taking the batchorder and flattening into a straight set. This is shown in the thirdstage 5520 because the first four images 5501-5504 in the carousel view5555 represent the first four images from the first batch 5545. Thefifth image in the carousel view 5555 is the first image from secondbatch 5550. The user can view the remaining three images 5506-5508 intheir batch order by using the remote control to scroll though thecarousel view. Although this linearization does not sort the images in aproper chronological order, it allows the user to view the images in anorder that was shown in the batch view. Instead of flattening the imagesinto a straight set, the application may present the images in a numberof different ways. For instance, the application may display the imagesfrom different batches in chronological order starting with the oldestimage to the newest image without regard to the batch sorting. In someembodiments, the application provides selectable items to switch fromone type of sorting (e.g., the sorting illustrated in the third stage5520) to another type of sorting (e.g., chronological or reversechronological sorting).

VIII. Personal Computer

The image sharing tools of some embodiments are integrated into a maingraphical user interface or shell of an operating system (“OS”). Thatis, the image sharing tools are not part of an image application but arepart of the main graphical user interface (“GUI”). Several example ofsuch image sharing tools will now be described by reference to FIGS.56-61. In these examples, the operating system is a Windows operatingsystem that is extended to support image-sharing operations. However,other types of operating systems (e.g., Linux, Mac OS X) can be extendedto support the same or similar features.

A. Control Panel

In some embodiments, the image sharing tools are integrated into an OSupon executing an installer program. FIG. 56 provides an illustrativeexample of installing and configuring the image sharing tools. Fouroperational stages 5605-5620 of the owner's personal computer (PC) areillustrated in this figure.

The first stage 5605 illustrates the OS's desktop. The owner hasselected the installation program (e.g., executable file) to display aninstallation window 5690. The owner might have first downloaded theinstallation program using a web browser (not shown) or obtained it froma storage device (e.g., hard disk, flash driver, etc.). As shown, theinstallation widow 5690 includes a heading indicating that it isinstalling a control panel item for configuring the image sharing tools.In addition to the heading, the installation window includes a messagethat the control panel item will be installed on the PC. The controlpanel is a part of the OS's GUI that allows users to configure differentsoftware and hardware settings. In the first stage 5605, the userselects (e.g., with a cursor click operation) a next button 5625.Alternatively, the user can select a cancel button 5630 to cancel theinstallation of the image sharing tools.

The second stage 5610 illustrates the OS's desktop after installing thecontrol panel item. Specifically, the control panel item has been openedto display a login window 5635. The owner has typed in a username (e.g.,an email address) and password into a username field and a passwordfield, respectively. The user might have first created an account with acloud service provider in order to register the username and password.The user then selects a sign-in button 5640 to sign in with the cloudservice provider. As will be described in detail below, the cloudservice provider of some embodiments facilitates the image sharingoperations between different user devices.

The selection of the sign-in button 5640 results in the display of acloud service control panel window 5650 (herein after a settings menu),as illustrated in the third stage 5615. The settings menu 5650 includesseveral selectable items (e.g., check boxes) for synchronizing bookmarksacross user devices. The settings menu 5650 may also include selectableitems for syncing calendars and other data.

In the example illustrated in the third stage 5615, the settings menu5650 includes a selectable item 5655 for selecting a photo stream and abutton 5685 for setting photo stream options. The user can select (e.g.,through a cursor click operation) this item to turn on or off the imagestreaming features. When selected, the owner's PC may be registered withthe cloud service provider to share images with other devices associatedwith the owner and/or different users. In addition, the selection ofthis item 5655 may cause the image sharing tools to be integrated in theOS's shell.

In the third stage 5615, the owner selects the button 5685. As shown inthe fourth stage 5620, the selection results in the display of a photostream options window 5665. This window list a first selectable item5670 for turning on or off the owner's personal photo stream, and asecond selectable item 5675 for turning on or off shared photo streams.That is, the window 5665 includes separate controls for activating apersonal photo stream that is shared across only the user's device, andfor activating a shared photo stream that is shared with other users.The window 5665 also includes a control 5680 to specify the location ofthe photo stream folder (e.g., that contain folders for the personal andshared photo streams). The window 5664 may also include one or morecontrols for blocking or allowing notifications (e.g., photo streaminvitations, comment notifications, new image notifications) from peoplethat are not in the user's address book or contact list. In someembodiments, the window 5665 include other options to turn on or offsending or receiving photos stream invitations, showing notifications ina notification area (e.g., a system tray on a taskbar), receivinginvitations from only those in the owner's contact list, etc.

B. Creating a New Photo Stream

The previous example illustrates installing and configuring imagesharing tools on the owner's PC. Once configured, the image sharingtools allow a user to create and modify a photo stream and sharecomments with other users (e.g., regarding images). An example ofcreating a photo stream will now be described by reference to FIGS.57-58. Specifically, FIG. 57 illustrates an example of specifying asubscriber and a name for the photo stream. This is followed by FIG. 58,which illustrates selecting images for the photo stream and inputtingcomments for several of the images.

Four operational stages 5705-5720 of the OS are illustrated in FIG. 57.As shown, the OS is displaying a browser or explorer window 5725. Theimage-sharing tool has been integrated into the browser window 5725.Specifically, the browser's menu bar 5730 includes a new photo streammenu item 5735 for creating a new photo stream, add photos menu item5740 for adding images to an existing photo stream, and an options menuitem 5745 for specifying options for the photo stream. In someembodiments, the selection of the add photo menu item 5740 causes thebrowser 5725 to display a list of available photo streams to add one ormore selected images. In some embodiments, the selection of the optionsmenu item 5745 causes the OS to display different options for adding anew subscriber, deleting a subscriber, resending a photo streaminvitation, and/or turning on or off web publication for the photostream. The displayed options may also include an option forunsubscribing from a photo stream. This unsubscribe option may only beselected or displayed when the photo stream (e.g., the photo streamdisplayed in the browser 5725) is one that was subscribed to by the PC'suser.

In addition to the new menu items, the browser's hierarchical or treeview includes a photo stream item 5750 (hereinafter a photo streamfolder) with a photo stream icon. The photo stream folder 5750 includesa sub folder for the photo stream that is shared only by the owner'sdevices.

As shown in the first stage 5705, the owner selects (e.g., through acursor click operation) the new photo stream menu item 5735. Theselection causes the OS to display a photo stream options window 5755,as illustrated in the second stage 5710. This window 5755 includes thephoto stream icon 5760 on the top left-hand corner with a heading thatstates “New Photo Stream”. Beneath the heading is a subscriber field5765 for inputting subscribers for the photo stream. The subscriberfield 5765 is followed by a name field 5770 for specifying a name forthe photo stream and a selectable item (e.g., a check box 5775) forturning on or off the option to publish the photo stream to a website(e.g., a public website).

In the second stage 5710, the owner inputs an email address of apotential subscriber. The owner can input one or more email addresses ofother potential subscribers into this field 5765. As shown in the thirdstage 5715, the user then inputs a title or name for the photo stream inthe name field 5770. In the fourth stage 5720, the user then selects anext button 5780 to continue creating the photo stream.

FIG. 58 illustrates the OS after the selection of the next button 5780.Four operational stages 5805-5820 of the OS are illustrated in thisfigure. In the first stage 5805, the owner selects several images forthe photo stream. Specifically, the images are selected using a choosephotos window 5825. The first image 5830 is named “Me_Singing”, thesecond image 5832 is named with a default name (e.g., one specified by acamera), and the third image 5835 is named “Bike”. After choosing theimages, the user then selects a continue button 5840.

The second stage 5810 illustrates the OS after selecting the continuebutton 5840. As shown, the selected images are displayed in a commentswindow 5845. The comments windows 5845 displays each selected image witha field to associate a comment with the selected image. In someembodiments, the comment field is automatically populated based on thename of the image. For example, one or more installed components of theimage sharing tools may analyze the filename of the image and determinewhether to input the filename as a comment.

The filename may be analyzed using a number of different techniques. Insome embodiments, the analysis entails identifying one or more words,names, or people in the filename. The analysis may entail identifyingrandom names that are generated by different image capturing devices(e.g., digital cameras, smart phones, tablets). The analysis may alsoentail identifying different characters (e.g., underscore) and replacingthem with a space. In the example illustrated in the second stage 5810,the first image 5830 and the third image 5835 are associated with theircorresponding filenames. In addition, the underscore in the name of thefirst image 5830 has been replaced with a space for the first image'scomment. The owner can modify any one of these comments by inputting anew comment in the corresponding comment field.

As shown in the second stage 5810, the owner selects a done button 5850to create the new photo stream. The third stage 5815 illustrates thebrowser 5725 after creating the photo stream. As shown, the new photostream folder 5855 is displayed on the browser 5725. The new photostream folder 5855 is displayed with an icon that provides a visualindication of the images in the photo stream. Specifically, the iconincludes thumbnail representations of the three images 5830-5835 in thephoto stream. The thumbnails are also sized differently. That is, thefirst thumbnail image is shown larger than the other two thumbnailimages. In addition to the photo stream folder 5855, the new photostream is listed in the browser's hierarchical or tree view 5750.

The fourth stage 5820 illustrates the browser 5725 after the owner hasselected the photo stream folder icon 5855. The selection results in thebrowser 5725 displaying the images in the photo stream. In the exampleillustrated in the fourth stage 5820, each of the images 5830-5835associated with a particular comment is shown with a marking 5860 (e.g.,a comment bubble). The marking 5860 provides a visual indication to theowner as to the association of the particular comment with thecorresponding image. In some embodiments, the color of the markingindicates whether the image is associated with one or more unreadcomments. For instance, a first color (e.g., white) may indicate thatthere are no unread comments associated with an image, and a seconddifferent color (e.g., blue) may indicate that there are one or moreunread comments associated with the image.

Here, the batch view 5865 includes a photo stream heading 5870 thatidentifies the name of the photo stream and the number of images in thephoto stream, a batch heading 5875 that identifies the date and timewhen the images were added to the photo stream and the number of imagesin the batch. The batch heading 5875 is followed by the images in thephoto stream. In presenting the images, the image sharing tools select aparticular layout based on the number of images and/or the orientationsof those images. Several examples of selecting different layouts aredescribed above by reference to FIGS. 42-47.

As shown in the fourth stage 5820, the browser window 5725 displaysadditional information (e.g., metadata) associated with the photosstream. Specifically, the browser's metadata section 5880 lists (1) thename of the photo stream, (2) the owner of the photo stream, the numberof images in the photo stream, (3) each subscriber with correspondingsubscription status, and (4) a public website status stating that thefeature of publishing to the public website is not activated or turnedon for this photo stream.

C. Accepting the Invitation

In the previous two examples, the owner creates a new photo stream usingthe image sharing tools that are integrated into the browser. Once thenew photo stream is created, a photo stream invitation is pushed to oneor more devices associated with the person invited to the photo stream.One or more of these devices may be the same type of computing device(e.g., a PC) or some other type of device with a different platform(e.g., a smart phone, tablet, digital media receiver, etc.).

FIG. 59 provides an illustrative example of accepting a photo streaminvitation with a subscriber's device. In this example, the subscriber'sdevice is a PC that is running the same OS as the owner's device. Threeoperational stages 5905-5915 are shown in this figure. The figureincludes the OS's desktop 5920 and taskbar 5925.

The first stage 5905 illustrates an example notification that isreceived via the taskbar 5925. As shown, the notification appears as apop-up window 5930 (e.g., bubble). In some embodiments, the pop-upwindow 5930 appears over a cloud service system tray icon 5935 in thetask bar 5925. As shown, the pop-up window 5930 includes a photo streamicon and a notification stating that a new photo stream invitation hasbeen received. The notification also states how to select (e.g., click)the window to view the photo stream invitation.

In the first stage 5905, the recipient selects the pop-up window 5930.The selection causes the OS to display the photo stream invitationwindow 5940, as illustrated in the second stage 5910. The invitationincludes the photo stream icon and the invitation. The invitation statesthe owner and name of the photo stream. The photo stream invitationwindow 5940 also includes an accept button 5945 to accept theinvitation, a decline button 5950 to decline it, and a decide laterbutton 5955 to keep the invitation pending.

The third stage 5915 illustrates the OS after the recipient has acceptedthe invitation. The selection results in a window browser 5725displaying the images in the photo stream. Similar to the owner'sdevice, the images are displayed in the batch view 5865.

D. Modifying a Photo Stream

In the previous example, the recipient accepts a photo stream invitationto view images in the photo stream. In some embodiments, the imagesharing tools can be used to add or delete images from the photo stream.FIG. 60 provides an example of adding an image to a photo stream. Threeoperational stages 6005-6015 of the owner's PC are illustrated in thisfigure.

In the first stage 6005, the OS displays its desktop. The desktopincludes an icon 6020 for an image file. The owner selects (e.g., byselecting the right-click button on the cursor controller, or holding amodifier key and selecting the left-click button) the image icon 6020from the desktop.

As shown in the second stage 6010, the selection causes the OS todisplay a context menu 6025. The context menu 6025 includes a menu item6030 to open the image file. The context menu 6025 also includes a menuitem to add to photo stream 6035 for adding one or more selected imagesto a particular photo stream. This context menu 6025 is an extension tothe shell (e.g., when the cloud service control panel was installed onthe owner's PC). In some embodiments, the menu item to add to photostream 6035 only appears upon turning on the image sharing feature(e.g., by selecting a check box in the cloud service control panel (notshown)).

In the second stage 6010, the owner has selected the menu item to add tophoto stream 6035. The selection results in a list of existing photostreams displayed in a sub-menu 6040. The sub-menu 6040 includes a menuitem 6045 to add the selected image to the owner's personal photostream, a menu item 6050 to add it to a photo stream shared with asubscriber, and a menu item 6055 to add it to a new photo stream. Here,the owner selects the menu item 6050 to add the selected image to thephoto stream that is shared with the subscriber.

The third stage 6015 illustrates the OS after selecting the menu item6050. As shown, the selected image is displayed in the comments window5845. As mentioned above, the comments windows 5845 displays eachselected image with a field to associate a comment for the selectedimage. In the third stage 6015, the owner selects the done button 6060to add the selected image to the photo stream.

The previous example illustrated one of several different ways one ormore selected images can be added to a photo stream. In conjunction withor instead of the context menu, the image sharing tools of someembodiments allow an owner to add images to a photo stream by draggingand dropping images onto the photo stream folder. The owner can alsodelete one or more selected images from the photo stream folder. Whendeleted, the images may be deleted from one or more of the owner's otherdevices and/or one or more of each subscriber's device. In someembodiments, the owner can delete the photo stream folder to delete theentire photo stream from one or more of the owner's other devices and/orone or more of each subscriber's device.

E. Commenting

Several examples of commenting with different devices have beendescribed above. These examples include commenting using a smart phone,tablet, and a digital media receiver. FIG. 61 provides an illustrativeexample of leaving a comment using a PC. Four operational stages6105-6120 of the user's PC are illustrated in this figure.

In the first stage 6105, the browser 5725 displays images in a photostream. The heading 6125 includes the name of the photo stream and thenumber of images in the photo stream. The sub-heading 6130 includes thedate and time that the group of images was added to the photo stream.The first image 6135 has been selected from the browser 5725. Theselection results in the display of the image's metadata in the metadatasection 6140. Specifically, the metadata section 6140 states (1) theimage format (e.g., JPEG, GIF, PNG), (2) the date (e.g., timestamp, filecreation date) associated with the image, and (3) the number of commentsassociated with image. The metadata section also includes a commentsbutton 6145 for opening a comments tool that is described below.

As shown in the first stage 6105, the image 6135 is associated with fourcomments. A marking 6150 is displayed over the image 6135 on the lowerright-hand corner. The marking 6150 (e.g., the double comment bubble)indicates that the user is a part of the conversation. That is, the userhas previously left at least one comment regarding the image 6135 and asubscriber has left at least one other comment regarding the same image.The color of the marking 6150 indicates that there are one or moreunread comments.

The first stage 6105 illustrates the selection of the comments button6145. The selection causes the browser 5725 to display the comments tool6155, as illustrated in the second stage 6110. The comments tool 6155appears as a side bar of the browser. In this example, the comments tool6155 is shown on the right side of the browser 5725. The comments toolincludes a comment field 6160 for inputting a comment and a post button6165 to post the comment. The comment field 6160 displays a line of textthat invites the user to add a comment. The comments tool 6155 isdisplayed with a heading “Comments”. Adjacent to the heading is aselectable item or selectable icon 6170 (e.g., of a heart, smiley face)that can be selected to indicate that the user approves or likes theimages.

As shown in the second stage 6110, the comments are listed under thecomments heading. Specifically, there are four comments associated withthe image 6135. As shown by the comments' metadata, the user has leftone comment at one time and the subscriber has left another comment atanother time. The remaining two comments are attributed to theselections of the selectable item 6170. Accordingly, the image sharingtools of some embodiments counts the number of approvals or likes ascomments.

The third stage 6115 illustrates the comments tool 6155 after the userhas inputted a comment into the comment field 6160. The user thenselects the post button 6165 to post the comment. As shown in the fourthstage 6120, the new comment has been added into the comments tool 6155.Specifically, the new comment has been displayed at the top of thecomments list but below the approval ratings. The number of commentsdisplayed in the metadata section 6140 has also been incremented by one.In the example described above, a number of different comments arelisted in the comments tool 6155. When the number of comments exceedsthe display area of the comments tool, the comments tool of someembodiments provides a scroll bar for scrolling through the comments.

Several examples of the integrated image sharing tools are describedabove. FIG. 62 provides an illustrative example of an alternateembodiment of the integrated image sharing tools. Three operationalstages 6205-6205 of the user's PC are illustrated in this figure. FIG.62 is similar to the ones described above. However, the image sharingtools do not include a bottom section that displays information about ashared photo stream or its images. As described above, the bottomsection contained a comment button for showing comments. Instead of thecomment button, the menu bar 6245 includes a menu item 6220. The menuitem can be selected to display any comment associated with a selectedimage and/or to leave a comment regarding the image. Alternatively, theuser can select the comment bubble 6250 to display or leave comments.

In the example illustrated in FIG. 62, the menu bar 6245 includes a menuitem 6225 for displaying a photo stream option window 6230. The photostream options window may also be displayed through a context menu item.The window 6230 is similar to the options sheet described above byreference to FIG. 21. Specially, the window includes a name field 6235for specifying the name of the shared photo stream, a subscriber field6240 for adding or removing subscribers, and a control 6245 (e.g., acheckbox) for specifying whether the shared photo stream is published toa public website. In some embodiments, the image sharing tools providedifferent controls depending on whether the user is an owner orsubscriber. For instance, the photo stream options window 6230 mayinclude a control (e.g., button) for unsubscribing from a subscribedphoto stream when the browser window displays images from the subscribedphoto stream.

IX. Image Organizing and Editing Application

The previous section describes several examples of how the image sharingtools are provided in one computing platform (e.g., Windows platform).Several examples of the image sharing tools on another computingplatform will now be described below by reference to FIGS. 63-65. Inthese examples, the image sharing tools are integrated into an imageorganizing and editing application that operates on a Mac OperatingSystem (e.g., Mac OS X). The OS may include one or more otherapplications (e.g., a professional image editing and managementapplication) that include the same or similar image sharing features.

A. Image Sharing Tools in an Image Organizing and Editing Application

FIG. 63 provides an illustrative example of the image sharing tools thatare integrated into an image organizing and editing application.Specifically, this figure illustrates in four operational stages6305-6320 how an owner can create a photo stream using the imageorganizing and editing application.

As shown in the first stage 6305, the name of the application is “PhotoApplication”. The photo application includes (1) a sidebar 6325 thatdisplays different collections of images, (2) an image display area 6330that displays images in a collection, and (3) a share button 6335 toshare one or more images selected from the image display area 6330. Thephoto application also includes a bottom bar 6340 that displaysdifferent tools, such as a search tool 6345 for searching images, aslider 6350 for resizing images in the image display area 6330, a slideshow tool 6355 for playing a slideshow of images in a collection, anedit button 6360 for selecting different editing operations (e.g.,removing red eye, cropping, enhancing, etc.) to perform on a selectedimage. In addition, the bottom bar 6340 includes an add to button 6365for adding selected images to a particular collection (e.g., an album, aphoto stream, etc.) and a share button 6335 for sharing the selectedimages.

The first stage 6305 illustrates selecting a photo stream option usingthe share button 6335. As shown, the “Photos” collection has beenselected from the side bar 6325. Based on the selection, the imagedisplay area 6330 displays thumbnail representations of the images inthe collection. The owner has selected two images from the image displayarea 6330. To share these images, the owner has also selected the sharebutton 6335. The selection of the share button results in the display ofa pop-up window 6370. The pop-up window 6370 includes a list of shareoptions. Here, the list includes an option 6372 to order prints of theselected images, an option 6373 to email the images, and an option 6375to create a photo stream using the images.

As shown in the first stage 6305, the owner selects the photo streamoption 6375 from the pop-up window 6370. The selection causes theapplication to display other options in a pop-up window 6380, asillustrated in the second stage 6310. The pop-up window 6380 includes anoption 6382 to create a new photo stream using the selected images andan option 6383 to add the selected images to a previous created photostream. In this example, the previously created photo stream is theowner's personal photo stream. As mentioned above, the personal photostream represents a group of images that are streamed or pushed to thosedevices associated with one owner (e.g., the owner). A slider forscrolling through different photo streams may be presented on the pop-upwindow 6380 (e.g., when all of the different photo streams cannot belisted in its limited space).

The third stage 6315 illustrates the photo application after theselection of the new photo stream option 6382. The selection causes theapplication to display a photo stream options window 6385. This windowincludes the photo stream icon on the top left-hand corner with aheading that states “New Photo Stream”. Beneath the heading is asubscriber field 6386 for designating subscribers for the photo stream.The subscriber field 6386 is followed by a name field 6388 forspecifying a name for the photo stream and a selectable item (e.g., acheck box 6389) for turning on or off the option to publish the photostream to a website (e.g., a public website).

In the third stage 6315, the owner has inputted an email address of apotential subscriber. The owner can input one or more email addresses ofother potential subscribers into this field 6386. The owner has alsoinputted a name for the photo stream in the name field 6388. As shown,the owner then selects the OK button 6387 to create the photo stream. Insome embodiments, the application provides a window (not shown) to inputa particular comment for one or more of the selected images.

The fourth stage 6320 illustrates the application after the owner hascreated the photo stream. As shown, the image display area 6330 includesa heading that includes a top bar 6390 that includes an option 6393 todisplay each image the personal photo stream, an option 6395 to displayeach image in the newly created photo stream, and an option 6392 todisplay all images in the different photo streams. Here, the imagedisplay area 6330 displays all the images as the option 6392 is selectedfrom the top bar 6390. The image display area 6330 is also organized bynew images and old images. The new images are displayed at the top andthe one previous image is displayed below. Each group of images includesa heading that states the group name (e.g., “New Photos”, “PreviousPhotos”) and the number of images in the group.

Conceptually, the application provides a form of a batch view that isdifferent from the one that was discussed above (e.g., by reference toFIGS. 50-52). As illustrated in this figure, the previous or new imagesection can include multiple different batches. One reason fordisplaying the images in this format is that it makes more efficient useof screen real estate than the above-described batch view. In someembodiments, the application displays images in one view format andprovides an option to display the images in another view format.

B. Accepting the Invitation

In the previous example, the owner creates a new photo stream using theimage sharing tools that are integrated into the photo application. Oncethe new photo stream is created, a photo stream invitation is pushed toone or more devices associated with the person who was invited to thephoto stream. One or more of these devices may be the same type ofcomputing device or some other type of device with a different platform(e.g., a smart phone, tablet, digital media receiver, etc.)

FIG. 64 provides an illustrative example of accepting a photo streaminvitation with a subscriber's device. In this example, the subscriber'sdevice is the same type of device that is running the same OS as theowner's device. Four operational stages 6405-6420 are shown in thisfigure. The figure includes the OS's desktop 6425 and a dock 6430. Thedock 6430 displays icons for opening different applications. As shown,the dock includes an icon 6435 for opening the photo application.

The first stage 6405 illustrates an example notification that is at theOS level. As shown, the notification appears as a marking on theapplication's icon 6435. One type of notification is a marking or abadge that appears at least partially over the application's icon. Thisis shown in the first stage 6405 as a badge 6440 that is displayed onthe icon of the photo application. The badge 6440 includes a number(e.g., “1”). In the example illustrated in the first stage 6405, itindicates there is one new photo stream invitation. Alternatively, thebadge may indicate that there is an update to one existing photo stream.

In the first stage 6405, the user selects the icon of the photoapplication on the dock 6430. The selection causes the photo applicationto open a pop up window 6445 that includes a message, as illustrated inthe second stage 6410. The message states that the recipient hasreceived a first photo stream invitation, and that the owner would liketo share a photo stream with the recipient. The message also providesinstructions for viewing the photo stream. Specifically, it states howto select the photo stream under the web section in the source list onthe left (i.e., the side bar 6450). In some embodiments, the applicationdisplays this window only once upon the recipient receiving a firstinvitation. That is, the application may not display the window whenanother invitation is received at the recipient's device.

As shown, the window 6445 includes a show me button 6460 and a cancelbutton 6455. In some embodiments, the selection of the show me button6460 causes the application to display a top level a photo stream menu.The cancel button 6455 closes the window. In the second stage 6410, theuser selects the show me button 6460.

The third stage 6415 illustrates the application after the selection ofthe show me button 6460. The selection causes the application to displayan icon representing the new photo stream 6465 in the image display area6330. The photo stream 6465 has also been highlighted in the side bar6450. The photo stream 6465 in the side bar is also marked with a numberthat indicates that there is a new invitation for a new photo stream oran update to an existing one. This marking provides the recipient with avisual indication at the application level, as opposed to a visualindication at the OS level.

As shown, the image display area 6330 is overlaid by a heading 6470 thatstate “Photo Stream”. The name of the new photo stream is also markedwith a marking. Here, the marking is a colored dot (e.g., a blue dot).Different from the markings described above, the marking here providesthe recipient with a visual indication at the album level or photostream level.

In the third stage 6415, the recipient selects the new photo stream 6465from the image display area 6330. The selection causes the applicationto display a photo stream invitation window 6475, as illustrated in thefourth stage 6420. The invitation includes the photo stream icon and theinvitation. The invitation originates from a device of the owner thatshared the images. The invitation states the name and owner of the photostream. The photo stream invitation window 6475 also includes an acceptbutton 6480 to accept the invitation, a decline button 6485 to declineit, and a decide later button 6482 to keep the invitation pending. Here,the recipient selects the accept button 6480 to accept the invitation.Once accepted, the images in the photo stream may be downloaded andpresented in the image display area 6330.

C. Commenting

The previous example illustrated accepting a photo stream invitation ona subscriber's device. FIG. 65 provides an illustrative example of howthe image sharing tools of some embodiments present comments on thephoto application. Four operational stages 6505-6520 of the subscriber'sdevice are illustrated in this figure.

The first stage 6505 illustrates the image display area 6330 displayingthe photo stream. The user has added an image to the photo stream, andtwo new comments have been left for the image. In some embodiments, theapplication plays a sound when there is an update to a photo stream. Forexample, the application may play a ding sound, a bell sound, a ringsound, or some other sound to indicate there is an update to a photostream (e.g., there is a new comment, new image, etc.) and/or when thereis a new photo stream invitation. The application may play differentsounds for different events, in some embodiments.

In the example illustrated in the first stage 6505, the applicationprovides several different visual indications of an update to a photostream. At the application level, the side bar 6450 displays a markingnext to the photo stream 6525. Here the number (i.e., “1”) indicatesthat there is an update to one photo stream. At the photo stream list oralbum list level, a photo stream representation (e.g., a thumbnailrepresentation) may be marked with one or more markings. For example,the photo stream representation 6530 is marked with a number (i.e., “1”)next to an image symbol 6535 (e.g., a photo icon) and a different number(i.e., “2”) next to a comment symbol 6540 (e.g., a chat bubble). Thesemarkings provide a visual indication to the subscriber that there is onenew image and two new comments.

In the first stage 6505, the user selects the photo streamrepresentation 6530 from the image display are 6330. As shown in thesecond stage 6510, the selection causes the application to displaythumbnail representations of the images in the photo stream. In someembodiments, the display is dynamically or automatically updated eachtime a person (e.g., the owner shares) additional images. At this photostream level, the application provides another visual indication of theupdates. For example, the images are batched into different sections(e.g., a new image section and a previous image section). Different fromseveral of the batch view described above, the current batch viewdisplay images by displaying new images separately from all other imagesthat were added previously. This can entail grouping previous sets orbatches of images into one group (e.g., labeled previous photos). Inaddition, the thumbnail representation of the image is marked with amarking (e.g., a chat bubble). Many examples of such a marking aredescribed above.

As shown in the second stage 6510, the thumbnail representation 6545 ofthe new image is associated with new comments. In the third stage 6515,the user selects an info button 6550 from the bottom bar 6340. Theselection of the info button 6550 causes the application to display aninfo pane 6555, as illustrated in the fourth stage 6520.

The fourth stage 6520 illustrates the application displaying the infopane 6555. The info pane 6555 appears on the right hand side of theimage display area 6330. The info pane displays information (e.g.,metadata) associated with the selected image. In this example, the infopane 6555 lists (1) the image resolution, (2) the name of the image, and(3) a date or timestamp associated with the image. However, the infopane may list other information, such location information (e.g., basedon GPS data associated with the image), people information (e.g., basedon face detection algorithms), etc.

In addition to image info, the info pane 6555 lists comments associatedwith the image. In some embodiments, the application provides tools tosend and receive comments across multiple different sources. This isillustrated in the fourth stage 6520 as the info pane 6555 lists commentfrom a subscriber of the photo stream as well as a comment that isreceived through a social network website. That is, the application isnot only integrated with the image sharing tools but is also integratedwith the social network website (e.g., through the website's API). Thisallows the info pane display area to display comments from peopleassociated with the social network website as well as those peopleassociated with the shared stream.

In the example illustrated in the fourth stage 6520, the comment sectionincludes a heading that states the total number of comments that arereceived from both sources. Each source includes a heading.Specifically, the photo stream comment is listed under a photo streamheading and the social network comment is listed under a social networkheading. Each of the two sections includes an add comment field to add acomment (i.e., 6556 or 6558) and a post button for adding comments. Thephoto stream section also includes an icon or symbol (e.g., a smileyface icon) that can be selected to indicate that the subscriber approvesor likes the selected image. The social network website section may havea similar selectable item in some embodiments.

In the example described above, the info pane 6555 lists the image'smetadata as well as the comments associated with the image. In someembodiments, the application displays other information relating to thephoto stream in the info pane. For example, the photo application ofsome embodiments displays information regarding a photo stream. Forexample, when no image is selected in the image display area, theapplication may present the photo stream's name, a list of subscribers,or an indication of whether the public website version of the photostream has been turned on or off. In some embodiments, the info pane canbe used to modify the photo stream. For example, the info pane can beused to rename the photo stream, add or remove subscribers, resend aninvitation or nudge the recipient, or turn on or off the public websiteversion. When the public website is turned on, the info pane may listthe URL of the public website.

X. Example System Architecture

In some embodiments, the image sharing tools are implemented acrossdifferent user devices and/or different platforms (e.g., from differentvendors). To facilitate the image and comment sharing operations, thedevices (hereinafter clients) may communicate with several differentservers. These servers may include storage servers (e.g., third-partystorage servers) and control servers. FIG. 66 conceptually illustratesan example system architecture in which the clients communicate with thedifferent servers to share images and comments.

As shown in FIG. 66, the figure includes different clients 6620-6640, aset of control servers 6610 and a set of storage servers 6615. Theclients are different computing devices that communicate with thecontrol and storage servers over network 6605. Any one of these devicescan be used to create a photo stream that includes a set of images, andinvite one or more individuals to view and/or comment on the set ofimages. In the example illustrated in FIG. 66, the clients includes asmart phone 6620, a laptop 6630 (e.g., that operates on a MAC OS), apersonal computer 6625 (e.g., that operate on a Windows OS), a tablet6635, and a digital media receiver 6640. However, a client can be one ofany number of different types of devices, such as a Personal DataAssistant (PDA), a workstation, etc.

The set of storage servers 6615 stores photo stream images for thedifferent clients. The set of storages may be contracted by the cloudservice provider (e.g., that manages the set of control servers 6610) tostore content for the different clients. According, the set of storageservers may be a set of third-party servers. To facilitate the storageservice, the set of third-party storage servers may be associated withan application program interface (API). The client devices may use thisAPI to store and receive images stored by the third-party storageservers. The set of storage servers may store the images for a temporaryperiod of time, in some embodiments.

The set of control servers 6610 manages control data associated with thedifferent clients. Examples of such control data include user data,photo stream data (e.g., a list of photo stream albums associated with auser, a list of individuals that can access a particular photos stream),etc. The control data may include references to the images that arestored by the set of storage servers 6615. Thus, the set of controlservers may maintain information relating to different shared streams,while not storing any of the images associated with those sharedstreams. However, the set of control servers may store commentsassociated images in the photo stream. To manage control data, eachcontrol server is associated with one or more storages (e.g., datastores). In some embodiments, the control server and the one or morestorages is a logical partition in which data relating a particular userresides.

In some embodiments, the control server is configured to receivenotifications from a client that one or more files are to be transmittedfrom the client. In response to such a notification, the control serversends, to the client, storage location data that indicates where the oneor more files are to be sent. The storage location data may be dataassociated with a storage server. The client uses the storage locationdata to transmit the one or more files to the storage service.

The control server of some embodiments is a push server that pushesnotifications (e.g., event triggers) to clients. For instance, when oneuser creates a shared photo stream that invites another person, thecontrol server may add the other person to a list of authorized usersthat are able to access the shared stream. The control server may addthe person once he or she accepts the invitation, in some embodiments.The control server may also send messages to all of the clientsassociated with the person. The clients then request for a list ofalbums from the control server. The content server provides the listwith a new photo stream associated with an invitation. When the personaccepts the invitation on one client, then all of the clients mayretrieve the images in the photo stream from the set of storage servers6615. As mentioned above, the notifications may be presented differentlyin different clients. For example, the smart phone client 6620 maydisplay a badge (e.g., over an application icon, play a sound, and/orcause it to vibrate), while the PC client 6625 may display anotification through the OS's system tray.

In some embodiments, the set of control servers communicates with thedifferent clients using one custom protocol. That is, each client usesthe same protocol to communicate with a control server. The protocol mayidentify a particular type of client device (e.g., a digital mediareceiver, a smart phone). However, the control server may not performany special operation or logic for that particular type of client. Insome embodiments, the protocol is based on an API that includesdifferent API calls or messages for modifying the photo stream's images(e.g., adding images, deleting images), inviting subscribers, acceptinginvitations, declining invitation, managing comments (e.g., creating acomment, deleting a comment), etc.

FIG. 67 conceptually illustrates an example of how a user's photostreams are represented at the server side (e.g., at a control server).As shown, the figure includes a hierarchical structure that representsthe different hierarchical levels of the user's photo stream data. Thisfigure includes user 6705, a set of photo streams 6710-6720, a set ofimages 6725-6735, and a set of comments 6740-6750. These different boxesrepresent data structures associated with the user's photo streams.

In the example illustrated in FIG. 67, the user is at the top of thehierarchical structure. The user may be associated with a useridentification (“ID”) and password. As shown, the user can be associatedwith any number of photo streams, including a personal photo stream anda shared stream. Here, the user is associated with three photo streams6710-6720.

In some embodiments, each photo stream is associated with a photo streamID that uniquely identifies the photo stream and a name that identifiesa name for the photo stream. Each photo stream is associated with one ormore images. For example, the images 6725-6735 are associated with thephoto stream 6710. As mentioned above, the images may be stored at oneor more third party storages. Accordingly, the control server may storea reference to each image (a URL) using the photo stream data structure.

In some embodiments, the control server references the image using afirst key (e.g., unique key) for identifying the image in the photostream. The first key may be associated with a second key for accessingthe image file that is stored at a storage server (e.g., a third partystorage server). The second key may include or is a checksum of that oneimage file. In some embodiments, the image file is run through acomputation algorithm that generates the checksum, which is a hash ofthe image's content. When a same image is inputted multiple times, thealgorithm returns the same file hash (e.g., hash value). Different fromthe control server, the storage server may reference the image by thefile hash, instead of the first key. This allows the storage server tostore one image, even though that image is in multiple different photostreams. On the other hand, the control server may reference the sameimage in different photo streams using different unique keys. Eachclient may generate keys and/or checksums for its images, in someembodiments.

As shown in FIG. 67, the comments are at the last level and areassociated with the image. Many comments can be associated with the oneimage. For example, the comments 6740-6750 are associated with the image6725. In some embodiments, the data structure for a comment isassociated with a name or user ID of the user that left the comment. Thedata structure may also include a comment ID for locating or accessingthe comment and a timestamp for identifying the time and/or date thecomment was left or posted.

XI. Example Server-Side Processes

The previous section described a control server that facilitates thesharing of content (e.g., images, video clips) and comments by managingcontrol data associated with a shared content stream. Examples of suchcontrol data include user data (e.g., a list of devices associated witha user) and photo stream data (e.g., a list of photo stream associatedwith the user, a list of individuals that can access a particular photostream, file location data, etc.). Several example processes of such acontrol server will now be described by reference to FIGS. 68-71.

A. Notifying Recipients of a Shared Stream Invitation

FIG. 68 conceptually illustrates an example process 6800 that someembodiments perform to notify recipients of a new-shared streaminvitation. The process 6800, in some embodiments, is performed by thecontrol server. The process 6800 begins when it receives (at 6805) amessage regarding a new shared content stream from a source device(e.g., the owner's device). The process 6800 then sends (at 6810) filelocation data to the source device. In some embodiments, the filelocation data includes one or more URLs to upload content to a storageserver (e.g., a third-party storage server).

At 6815, the process 6800 identities each recipient that has beeninvited to join the shared stream. For example, the process 6800 mightidentify a username associated with each recipient. In some embodiment,the username is the same as the recipient's email address. Based on theidentification, the process 6800 identifies (at 6820) one or moredevices (e.g., destination devices) associated with each recipient. Theprocess 6800 sends (at 6825) a message regarding the shared streaminvitation to each recipient device. The process 6800 then ends.

Some embodiments perform variations on the process 6800. The specificoperations may not be performed in one continuous series of operations,and different specific operations may be performed in differentembodiments. Furthermore, the process 6800 could be implemented usingseveral sub-processes, or as part of a larger macro process. Forinstance, the process 6800 might identify each device associated withthe owner and send a message regarding an update to a shared contentstream. The process 6800 might also send the file location data to oneor more owner devices. The owner devices may then download the contentusing the file location data.

B. Adding Subscribers to a Shared Stream

The previous example described sending a shared stream invitation toeach recipient device that is associated with a shared content stream.FIG. 69 conceptually illustrates an example process 6900 that someembodiments perform when it receives a response from a recipient device.The process 6900, in some embodiments, is performed by the controlserver. The process 6900 begins when it receives (at 6905) receives amessage that requests a list of shared streams from a recipient'sdevice. The process 6900 then sends (at 6910) the list of shared streamsto the recipient device.

At 6915, the process 6900 receives, from the recipient's device, amessage regarding the shared stream invitation. Based on the message,the process 6900 determines (at 6920) whether the shared streaminvitation has been accepted. If so, the process 6900 marks or specifies(at 6925) the recipient as a subscriber in an authorization list that isassociated with the shared content stream. In some embodiments, theauthorization list lists different individuals that can access theshared content stream. The list may also specify whether a subscribercan add content to a shared stream, remove content, add or removesubscribers, and/or make comments.

After marking the recipient as a subscriber, the process 6900 sends (at6930) file location data to each device associated with the recipient.Each recipient device may then download the shared content from thestorage server using the file location data. The process 6900 thennotifies the owner of the acceptance of the shared stream invitation.Specifically, the process 6900 sends (at 6935) a message regarding theacceptance of to each device associated with the owner. One or more ofthe owner's device may then display a notification (e.g., bannernotification, system tray notification) regarding the acceptance of theshared stream invitation.

If the recipient has not accepted the shared stream invitation, theprocess 6900 removes (at 6940) the recipient from the authorizationlist. Instead of removing the recipient, the process 6900 might mark therecipient as a person that declined the invitation. In some embodiments,the process 6900 maintain two separate lists, e.g., one that listsdifferent subscribers and another that lists different recipients thathave not subscribed to the shared stream.

Some embodiments perform variations on the process 6900. The specificoperations may not be performed in one continuous series of operations,and different specific operations may be performed in differentembodiments. Furthermore, the process 6900 could be implemented usingseveral sub-processes, or as part of a larger macro process.

C. Commenting

The content sharing tools of some embodiments allow differentparticipants to share comments regarding the shared content. FIG. 70conceptually illustrates an example process 7000 that some embodimentsperform to notify participants of a new comment. The process 7000, insome embodiments, is performed by the control server. The process 7000begins when it receives (at 7005) receives a message with the newcomment. The process 7000 then stores (at 7010) the comment.

At 7015, the process 7000 identifies participants of the shared contentstream. Based on the identification, the process 7000 sends a messageregarding an update to the shared content to the devices that areassociated with the participants. The process 7000 then ends.

FIG. 71 conceptually illustrates an example process 7100 that someembodiments perform to deliver a new comment. The process 7100, in someembodiments, is performed by the control server. The process 7100 beginswhen it receives (at 7105) receives a message that requests a list ofshared content streams from a recipient device. The process 7100 thensends (at 7110) the list of shared streams to the recipient device.

At 6915, the process 7100 receives, from the participant device, amessage request for the new comment. Based on the message, the process710 sends (at 7120) the comment to the participant's device. Someembodiments perform variations on the processes 7000 and 7100. Thespecific operations may not be performed in one continuous series ofoperations, and different specific operations may be performed indifferent embodiments. Furthermore, each of the processes 7000 and 7100could be implemented using several sub-processes, or as part of a largermacro process.

XII. Software Architecture

In some embodiments, the processes described above are implemented assoftware running on a particular machine, such as a computer or ahandheld device, or stored in a machine readable medium. FIG. 72conceptually illustrates the software architecture of content sharingtools 7200 of some embodiments. In some embodiments, the content sharingtools are provided as a stand-alone application or are integrated intoanother application, while in other embodiments the content sharingtools are implemented within an operating system. Furthermore, in someembodiments, the content sharing tools are provided as part of aserver-based solution. In some such embodiments, the content sharingtools are provided via a thin client. That is, the content sharing toolsruns on a server while a user interacts with the content sharing toolsvia a separate machine remote from the server. In other embodiments, thecontent sharing tools are provided via a thick client. That is, thecontent sharing tools are distributed from the server to the clientmachine and runs on the client machine.

The content sharing tools 7200 includes a user interface (UI)interaction and generation module 7210 and a shared stream manager 7220.As shown, the user interface interaction and generation module 7210generates a number of different UI elements, including a content displayarea 7212, a shared stream menu 7214, shared stream management tools7216, and comment tools 7218. The figure also illustrates stored dataassociated with the content sharing tools: shared stream data 7244,content data 7244, and other data 7248. In some embodiments, the sharedstream data 7244 stores data related to a shared stream (e.g., a list ofphoto streams, list of individuals associated with a photo stream,references to images, comments, etc.). The content data 7246 may includeimages and/or video. The content data 7246 of some embodiments includesmultiple versions of one image (e.g., at different resolution).

FIG. 72 also illustrates an operating system 7202 that includes inputdevice driver(s) 7204, display module 7206 and notifications tools. Insome embodiments, as illustrated, the device drivers 7204 and displaymodule 7206 are part of the operating system 7202 even when the contentsharing tools 7200 is part of an application that is separate from theoperating system 7270. The input device drivers 7204 may include driversfor translating signals from a keyboard, mouse, touchpad, tablet,touchscreen, etc. A user interacts with one or more of these inputdevices, each of which send signals to its corresponding device driver.The device driver then translates the signals into user input data thatis provided to the UI interaction and generation module 7210.

The present application describes a graphical user interface thatprovides users with numerous ways to perform different sets ofoperations and functionalities. In some embodiments, these operationsand functionalities are performed based on different commands that arereceived from users through different input devices (e.g., keyboard,trackpad, touchpad, mouse, etc.). For example, the present applicationillustrates the use of touch controls in the graphical user interface tocontrol (e.g., select, move) objects in the graphical user interface.However, in some embodiments, objects in the graphical user interfacecan also be controlled or manipulated through other controls, such as acursor control. In some embodiments, the touch control is implementedthrough an input device that can detect the presence and location oftouch on a display of the device. An example of such a device is a touchscreen device. In some embodiments, with touch control, a user candirectly manipulate objects by interacting with the graphical userinterface that is displayed on the display of the touch screen device.For instance, a user can select a particular object in the graphicaluser interface by simply touching that particular object on the displayof the touch screen device. As such, when touch control is utilized, acursor may not even be provided for enabling selection of an object of agraphical user interface in some embodiments. However, when a cursor isprovided in a graphical user interface, touch control can be used tocontrol the cursor in some embodiments.

The display module 7206 translates the output of a user interface for adisplay device. That is, the display module 7206 receives signals (e.g.,from the UI interaction and generation module 7210) describing whatshould be displayed and translates these signals into pixel informationthat is sent to the display device. The display device may be an LCD,plasma screen, CRT monitor, touchscreen, etc.

In some embodiments, the notification tools 7208 presents notifications(e.g., at the operating system level). Examples of such notificationsmay include one or more of the following: an icon badge, bannernotification, system tray notification, lock-screen alert, notificationcenter message, etc. In some embodiments, the notification tools 7208causes a computing device (e.g., smart phone, tablet) to play a sound orvibrate.

The UI interaction and generation module 7210 of the content sharingtools 7200 interprets the user input data received from the input devicedrivers 7204 and passes it to various UI components, including thecontent display area 7212, the shared stream menu 7214, the sharedstream management tools 7216, and the comment tools 7218. The UIinteraction and generation module 7210 also manages the display of theUI, and outputs this display information to the display module 7206. Insome embodiments, the UI interaction and generation module 7210generates a basic UI and populates the UI with information from theother modules and stored data (e.g., stored data 7244, 7248).

As shown, the UI interaction and generation module 7210, in someembodiments, generates a number of different UI elements. Theseelements, in some embodiments, include the content display area 7212,the shared stream menu 7214, the shared stream management tools 7216,and the comment tools 7218. In many of the examples described above, thecontent display area 7212 is referred to as an image display, and theshared stream menu 7214 is referred to a photo stream menu. In someembodiments, the shared stream management tools 7216 include a photostream options sheet, a comment sheet, a photo stream management sheet(e.g., to add or remove subscriber, to resend a photo stream invitation,to delete a photo stream, etc.). The comment tools of some embodimentsinclude an add comment field, like button, delete comment button, etc.All of these UI elements are described in many different examples above.

As shown in FIG. 72, the shared stream manager includes severalcomponents to facilitate the content and comment sharing features. Thecomponents include (1) a data manager 7222, (2) a checksum generator7224, (3) a web publication module 7226, (4) a layout manager 7228, (5)an image generator 7230, (6) a comment module 7232, (7) a filenameanalyzer, and (8) a notification module. Different components may beprovided for different platforms. For instance, the filename analyzermay be provided in one platform (e.g., a PC platform) while not providedfor another platform (e.g., a smartphone or tablet platform).

In some embodiments, the data manager 7222 facilitates the uploading anddownloading of content data from one or more the storage servers 7238(e.g., third-party storage servers). The data manager 7222 may receivefile location data (e.g., URL address), and upload to or downloadcontent from a storage server. This data manager 7222 of someembodiments operates automatically without any user input. For example,the shared stream manager 7220 may receive a message regarding a newbatch of images in a shared image, and direct the data manager 7222 todownload the batch from the storage server.

The checksum generator 7224 runs an image file through a computationalgorithm that generates a checksum of that image file, which is a hashof the image's content. The content sharing tools and the control servermay reference an image using a first key (e.g., unique key) foridentifying the image in the photo stream. The first key may beassociated with a second key for accessing the image file that is storedat an external data source (e.g., a storage server). The second key mayinclude or is a checksum of that one image file. This checksum allowsthe storage server to store one image, even though that image is inmultiple different photo streams.

The web publication module 7230 allows images to be published as a setof webpages to a website. In some embodiments, the website is a publicwebsite that can be accessed by any browser with the correct URLaddress. To publish the images, the web publication module 7230 maycommunicate with one or more of the web publishing servers 7242.

In some embodiments, the content display area 7212 presents imagessimilar to the ones that are published to a website. To present theimages, the shared stream manager 7220 may include the layout manager7228. This layout manager of some embodiments selects a layout based onthe number of images in a batch and the orientation of those images. Theimages may be presented in a particular order (e.g., starting with theoldest image and ending with the newest image, or vice versa). Thebatches may be presented in a particular order (e.g., starting with theoldest batch to the newest batch, or vice versa).

In some embodiments, the comment module 7232 allows the sharing ofcomments regarding content in a shared stream. This module of someembodiments receives a comment and generates a message regarding thecomment to send to a control server. The comment module may also receivea message regarding a new comment and perform operations to display thecomment (e.g., in the content display area 7212). These operations mayinclude identifying the image associated with the comment, the timestampof the comment, and the person that left the comment. These operationsmay also entail counting the number of comments and/or likes associatedwith that same image.

The filename analyzer 7234 analyzes a filename of a piece of content toautomatically input a comment. The filename may be analyzed using anumber of different techniques. In some embodiments, the analysisentails identifying one or more words, names, or people in the filename.The analysis may entail identifying random filenames that are generatedby different image capturing devices (e.g., digital cameras, smartphones, tablets). The analysis may also entail identifying differentcharacters (e.g., underscore) and replacing them with a space.

The notification module detects notifications from a control server andfacilitates their presentation. For example, the notification module maycause different photo streams to be marked with a marking (e.g., coloreddot) in the shared stream menu 7214 and/or cause images to be markedwith a marking (e.g., a chat bubble, double chat bubble, a flag thatidentifies the number of new images, etc.) in the content display area7212. In some embodiments, the notification module interoperates withthe notifications tools 7208 to present notifications (e.g., icon badge,banner notification, system tray notification) at the operating systemlevel.

While many of the features of the content sharing tools 7200 have beendescribed as being performed by one module (e.g., the comment module7232, the web publication module 7226, etc.), one of ordinary skill inthe art will recognize that the components (e.g., functions, modules)described herein might be split up into multiple components. Similarly,components that are described as being performed by multiple differentmodules might be performed by a single module, in some embodiments.

XIII. Electronic Systems

Many of the above-described features and applications are implemented assoftware processes that are specified as a set of instructions recordedon a computer readable storage medium (also referred to as computerreadable medium). When these instructions are executed by one or morecomputational or processing unit(s) (e.g., one or more processors, coresof processors, or other processing units), they cause the processingunit(s) to perform the actions indicated in the instructions. Examplesof computer readable media include, but are not limited to, CD-ROMs,flash drives, random access memory (RAM) chips, hard drives, erasableprogrammable read-only memories (EPROMs), electrically erasableprogrammable read-only memories (EEPROMs), etc. The computer readablemedia does not include carrier waves and electronic signals passingwirelessly or over wired connections.

In this specification, the term “software” is meant to include firmwareresiding in read-only memory or applications stored in magnetic storage,which can be read into memory for processing by a processor. Inaddition, in some embodiments, multiple software inventions can beimplemented as sub-parts of a larger program while remaining distinctsoftware inventions. In some embodiments, multiple software inventionscan also be implemented as separate programs. Finally, any combinationof separate programs that together implement a software inventiondescribed here is within the scope of the invention. In someembodiments, the software programs, when installed to operate on one ormore electronic systems, define one or more specific machineimplementations that execute and perform the operations of the softwareprograms.

A. Mobile Device

The image editing and viewing applications of some embodiments operateon mobile devices. FIG. 73 is an example of an architecture 7300 of sucha mobile computing device. Examples of mobile computing devices includesmartphones, tablets, laptops, etc. As shown, the mobile computingdevice 7300 includes one or more processing units 7305, a memoryinterface 7310 and a peripherals interface 7315.

The peripherals interface 7315 is coupled to various sensors andsubsystems, including a camera subsystem 7320, a wireless communicationsubsystem(s) 7325, an audio subsystem 7330, an I/O subsystem 7335, etc.The peripherals interface 7315 enables communication between theprocessing units 7305 and various peripherals. For example, anorientation sensor 7345 (e.g., a gyroscope) and an acceleration sensor7350 (e.g., an accelerometer) is coupled to the peripherals interface7315 to facilitate orientation and acceleration functions.

The camera subsystem 7320 is coupled to one or more optical sensors 7340(e.g., a charged coupled device (CCD) optical sensor, a complementarymetal-oxide-semiconductor (CMOS) optical sensor, etc.). The camerasubsystem 7320 coupled with the optical sensors 7340 facilitates camerafunctions, such as image and/or video data capturing. The wirelesscommunication subsystem 7325 serves to facilitate communicationfunctions. In some embodiments, the wireless communication subsystem7325 includes radio frequency receivers and transmitters, and opticalreceivers and transmitters (not shown in FIG. 73). These receivers andtransmitters of some embodiments are implemented to operate over one ormore communication networks such as a GSM network, a Wi-Fi network, aBluetooth network, etc. The audio subsystem 7330 is coupled to a speakerto output audio (e.g., to output different sound effects associated withdifferent image operations). Additionally, the audio subsystem 7330 iscoupled to a microphone to facilitate voice-enabled functions, such asvoice recognition, digital recording, etc.

The I/O subsystem 7335 involves the transfer between input/outputperipheral devices, such as a display, a touch screen, etc., and thedata bus of the processing units 7305 through the peripherals interface7315. The I/O subsystem 7335 includes a touch-screen controller 7355 andother input controllers 7360 to facilitate the transfer betweeninput/output peripheral devices and the data bus of the processing units7305. As shown, the touch-screen controller 7355 is coupled to a touchscreen 7365. The touch-screen controller 7355 detects contact andmovement on the touch screen 7365 using any of multiple touchsensitivity technologies. The other input controllers 7360 are coupledto other input/control devices, such as one or more buttons. Someembodiments include a near-touch sensitive screen and a correspondingcontroller that can detect near-touch interactions instead of or inaddition to touch interactions.

The memory interface 7310 is coupled to memory 7370. In someembodiments, the memory 7370 includes volatile memory (e.g., high-speedrandom access memory), non-volatile memory (e.g., flash memory), acombination of volatile and non-volatile memory, and/or any other typeof memory. As illustrated in FIG. 73, the memory 7370 stores anoperating system (OS) 7372. The OS 7372 includes instructions forhandling basic system services and for performing hardware dependenttasks.

The memory 7370 also includes communication instructions 7374 tofacilitate communicating with one or more additional devices; graphicaluser interface instructions 7376 to facilitate graphic user interfaceprocessing; image processing instructions 7378 to facilitateimage-related processing and functions; input processing instructions7380 to facilitate input-related (e.g., touch input) processes andfunctions; audio processing instructions 7382 to facilitateaudio-related processes and functions; and camera instructions 7384 tofacilitate camera-related processes and functions. The instructionsdescribed above are merely exemplary and the memory 7370 includesadditional and/or other instructions in some embodiments. For instance,the memory for a smartphone may include phone instructions to facilitatephone-related processes and functions. The above-identified instructionsneed not be implemented as separate software programs or modules.Various functions of the mobile computing device can be implemented inhardware and/or in software, including in one or more signal processingand/or application specific integrated circuits.

While the components illustrated in FIG. 73 are shown as separatecomponents, one of ordinary skill in the art will recognize that two ormore components may be integrated into one or more integrated circuits.In addition, two or more components may be coupled together by one ormore communication buses or signal lines. Also, while many of thefunctions have been described as being performed by one component, oneof ordinary skill in the art will realize that the functions describedwith respect to FIG. 73 may be split into two or more integratedcircuits.

B. Computer System

FIG. 74 conceptually illustrates another example of an electronic system7400 with which some embodiments of the invention are implemented. Theelectronic system 7400 may be a computer (e.g., a desktop computer,personal computer, tablet computer, etc.), phone, PDA, or any other sortof electronic or computing device. Such an electronic system includesvarious types of computer readable media and interfaces for variousother types of computer readable media. Electronic system 7400 includesa bus 7405, processing unit(s) 7410, a graphics processing unit (GPU)7415, a system memory 7420, a network 7425, a read-only memory 7430, apermanent storage device 7435, input devices 7440, and output devices7445.

The bus 7405 collectively represents all system, peripheral, and chipsetbuses that communicatively connect the numerous internal devices of theelectronic system 7400. For instance, the bus 7405 communicativelyconnects the processing unit(s) 7410 with the read-only memory 7430, theGPU 7415, the system memory 7420, and the permanent storage device 7435.

From these various memory units, the processing unit(s) 7410 retrievesinstructions to execute and data to process in order to execute theprocesses of the invention. The processing unit(s) may be a singleprocessor or a multi-core processor in different embodiments. Someinstructions are passed to and executed by the GPU 7415. The GPU 7415can offload various computations or complement the image processingprovided by the processing unit(s) 7410.

The read-only-memory (ROM) 7430 stores static data and instructions thatare needed by the processing unit(s) 7410 and other modules of theelectronic system. The permanent storage device 7435, on the other hand,is a read-and-write memory device. This device is a non-volatile memoryunit that stores instructions and data even when the electronic system7400 is off. Some embodiments of the invention use a mass-storage device(such as a magnetic or optical disk and its corresponding disk drive) asthe permanent storage device 7435.

Other embodiments use a removable storage device (such as a floppy disk,flash memory device, etc., and its corresponding drive) as the permanentstorage device. Like the permanent storage device 7435, the systemmemory 7420 is a read-and-write memory device. However, unlike storagedevice 7435, the system memory 7420 is a volatile read-and-write memory,such a random access memory. The system memory 7420 stores some of theinstructions and data that the processor needs at runtime. In someembodiments, the invention's processes are stored in the system memory7420, the permanent storage device 7435, and/or the read-only memory7430. For example, the various memory units include instructions forprocessing multimedia clips in accordance with some embodiments. Fromthese various memory units, the processing unit(s) 7410 retrievesinstructions to execute and data to process in order to execute theprocesses of some embodiments.

The bus 7405 also connects to the input and output devices 7440 and7445. The input devices 7440 enable the user to communicate informationand select commands to the electronic system. The input devices 7440include alphanumeric keyboards and pointing devices (also called “cursorcontrol devices”), cameras (e.g., webcams), microphones or similardevices for receiving voice commands, etc. The output devices 7445display images generated by the electronic system or otherwise outputdata. The output devices 7445 include printers and display devices, suchas cathode ray tubes (CRT) or liquid crystal displays (LCD), as well asspeakers or similar audio output devices. Some embodiments includedevices such as a touchscreen that function as both input and outputdevices.

Finally, as shown in FIG. 74, bus 7405 also couples electronic system7400 to a network 7425 through a network adapter (not shown). In thismanner, the computer can be a part of a network of computers (such as alocal area network (“LAN”), a wide area network (“WAN”), or an Intranet,or a network of networks, such as the Internet. Any or all components ofelectronic system 7400 may be used in conjunction with the invention.

Some embodiments include electronic components, such as microprocessors,storage and memory that store computer program instructions in amachine-readable or computer-readable medium (alternatively referred toas computer-readable storage media, machine-readable media, ormachine-readable storage media). Some examples of such computer-readablemedia include RAM, ROM, read-only compact discs (CD-ROM), recordablecompact discs (CD-R), rewritable compact discs (CD-RW), read-onlydigital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a varietyof recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.),flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.),magnetic and/or solid state hard drives, read-only and recordableBlu-Ray® discs, ultra density optical discs, any other optical ormagnetic media, and floppy disks. The computer-readable media may storea computer program that is executable by at least one processing unitand includes sets of instructions for performing various operations.Examples of computer programs or computer code include machine code,such as is produced by a compiler, and files including higher-level codethat are executed by a computer, an electronic component, or amicroprocessor using an interpreter.

While the above discussion primarily refers to microprocessor ormulti-core processors that execute software, some embodiments areperformed by one or more integrated circuits, such as applicationspecific integrated circuits (ASICs) or field programmable gate arrays(FPGAs). In some embodiments, such integrated circuits executeinstructions that are stored on the circuit itself. In addition, someembodiments execute software stored in programmable logic devices(PLDs), ROM, or RAM devices.

As used in this specification and any claims of this application, theterms “computer”, “server”, “processor”, and “memory” all refer toelectronic or other technological devices. These terms exclude people orgroups of people. For the purposes of the specification, the termsdisplay or displaying means displaying on an electronic device. As usedin this specification and any claims of this application, the terms“computer readable medium,” “computer readable media,” and “machinereadable medium” are entirely restricted to tangible, physical objectsthat store information in a form that is readable by a computer. Theseterms exclude any wireless signals, wired download signals, and anyother ephemeral signals.

While the invention has been described with reference to numerousspecific details, one of ordinary skill in the art will recognize thatthe invention can be embodied in other specific forms without departingfrom the spirit of the invention. For instance, many of the figuresillustrate various touch gestures (e.g., taps, double taps, swipegestures, press and hold gestures, etc.). However, many of theillustrated operations could be performed via different touch gestures(e.g., a swipe instead of a tap, etc.) or by non-touch input (e.g.,using a cursor controller, a keyboard, a touchpad/trackpad, a near-touchsensitive screen, etc.). In addition, a number of the figures (includingFIGS. 7, 14, 19, 20, 36, 37, 48, and 68-71) conceptually illustrateprocesses. The specific operations of these processes may not beperformed in the exact order shown and described. The specificoperations may not be performed in one continuous series of operations,and different specific operations may be performed in differentembodiments. Furthermore, the process could be implemented using severalsub-processes, or as part of a larger macro process. Thus, one ofordinary skill in the art would understand that the invention is not tobe limited by the foregoing illustrative details, but rather is to bedefined by the appended claims.

While the invention has been described with reference to numerousspecific details, one of ordinary skill in the art will recognize thatthe invention can be embodied in other specific forms without departingfrom the spirit of the invention. For example, one of ordinary skill inthe art will understand that many of the UI items of in FIGS. 1-6, 8-13,15-18, 21-35, 38-41, and 49-65 can also be activated and/or set by acursor control device (e.g., a mouse or trackball), a stylus, keyboard,a finger gesture (e.g., placing, pointing, tapping one or more fingers)near a near-touch sensitive screen, or any other control system in someembodiments. Thus, one of ordinary skill in the art would understandthat the invention is not to be limited by the foregoing illustrativedetails, but rather is to be defined by the appended claims.

What is claimed is:
 1. A non-transitory machine readable medium storingsets of instructions that when executed by at least one processing unitof a device provides a user interface (UI), the UI comprising: a firstdisplay area for displaying folders; and a second display area fordisplaying (i) an invitation to subscribe to a shared stream associatedwith a set of images, (ii) a first selectable item to accept the sharedstream invitation, and (iii) a second selectable item to decline theshared stream invitation, wherein a selection of the first selectableitem causes a shared stream folder to be created and added to the firstdisplay area, and causes the set of images to be downloaded from anexternal data source and added to the shared stream folder.
 2. Thenon-transitory machine readable medium storing of claim 1, wherein theset of images is a first set of images that is shared by a person,wherein a second set of images is automatically downloaded from theexternal data source and added to the shared stream folder upon theperson sharing the second set of images.
 3. The method of claim 2,wherein the first and second sets of images are displayed separately ina batch view, starting with the first or second set and ending with theremaining set.
 4. The method of claim 3, wherein an image layout isselected for each set based on the number of images in the set and theorientation of the images in the set.
 5. A non-transitory machinereadable medium storing sets of instructions that when executed by atleast one processing unit of a device provides a user interface (UI),the UI comprising: a display area for displaying folders; and a set ofimage sharing tools for (i) creating a shared stream associated with aset of images and (ii) inviting people to subscribe to the sharedstream, wherein the creation of the shared stream causes a shared streamfolder to be created and added to the display area with the set ofimages.
 6. The non-transitory machine readable medium of claim 5,wherein the first display area is a part of a file browser of anoperating system, wherein the set of image sharing tools is integratedinto the operating system upon execution of an installer program.
 7. Thenon-transitory machine readable medium of claim 6, wherein the operatingsystem comprises a control panel, wherein a control panel item forturning on or off the set of image sharing tools is added to the controlpanel with the execution of the installer program.
 8. The non-transitorymachine readable medium of claim 5, wherein the set of image sharingtool comprises an input field for inputting a comment regarding an imageassociated with the shared stream.
 9. The non-transitory machinereadable medium of claim 8, wherein the comment field is automaticallypopulated based on an analysis of a name of a file that contains theimage.
 10. The non-transitory machine readable medium of claim 5,wherein the UI further comprises a context menu item for associating aselected image with the shared stream and adding the selected image tothe share stream folder.
 11. A method of defining a user interface (UI)for a computing device, the method comprising: defining a first displayarea for displaying folders; and defining a second display area fordisplaying (i) an invitation to subscribe to a shared stream associatedwith a set of images, (ii) a first selectable item to accept the sharedstream invitation, and (iii) a second selectable item to decline theshared stream invitation, wherein a selection of the first selectableitem causes a shared stream folder to be created and added to the firstdisplay area, and causes the set of images to be downloaded from anexternal data source and added to the shared stream folder.
 12. Themethod of claim 11, wherein the set of images is a first set of imagesthat is shared by a person, wherein a second set of images isautomatically downloaded from the external data source and added to theshared stream folder upon the person sharing the second set of images.13. The method of claim 12, wherein the first and second sets of imagesare displayed separately in a batch view, starting with the first orsecond set and ending with the remaining set.
 14. The method of claim13, wherein an image layout is selected for each set based on the numberof images in the set and the orientation of the images in the set.
 15. Amethod of defining a user interface (UI) for a computing device, themethod comprising: defining a display area for displaying folders; anddefining a set of image sharing tools for (i) creating a shared streamassociated with a set of images and (ii) inviting people to subscribe tothe shared stream, wherein the creation of the shared stream causes ashared stream folder to be created and added to the display area withthe set of images.
 16. The method of claim 15, wherein the first displayarea is a part of a file browser of an operating system, wherein the setof image sharing tools is integrated into the operating system uponexecution of an installer program.
 17. The method of claim 16, whereinthe operating system comprises a control panel, wherein a control panelitem for turning on or off the set of image sharing tools is added tothe control panel with the execution of the installer program.
 18. Themethod of claim 15, wherein the set of image sharing tool comprises aninput field for inputting a comment regarding an image associated withthe shared stream.
 19. The method of claim 18, wherein the comment fieldis automatically populated based on an analysis of a name of a file thatcontains the image.
 20. The method of claim 15 further comprisingdefining a context menu item for associating a selected image with theshared stream and adding the selected image to the share stream folder.